1 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個贊
一般來說,可以通過類型系統(tǒng)來區(qū)分靜態(tài)和動態(tài)編程語言。在動態(tài)類型系統(tǒng)中你可以有以下
var x = 2
x = "c"
意思是,給定變量的類型可能會在其生命周期內(nèi)發(fā)生變化。靜態(tài)類型系統(tǒng)不允許這樣做。C#dynamic數(shù)據(jù)類型是此功能的一個示例。
注意不要將動態(tài)與推斷或弱類型系統(tǒng)混淆。推斷類型系統(tǒng)不需要變量的正式聲明,但會根據(jù)分配的值推斷類型。它不允許用不同的類型重新聲明變量。
var x = 2 // the type of x is int
x = "C" // compile error: incompatible types!
弱類型系統(tǒng)允許與聲明的變量類型不兼容的操作。C 允許將指針轉(zhuǎn)換為任何類型:
foo(void *ptr) {
char *str;
strcpy(str, (char *)ptr);
int i = &(int *)ptr + 1;
}
類型系統(tǒng)的所有組合都存在,有時使用相同的編程語言:靜態(tài)/動態(tài)、隱式(推斷)/顯式、弱/強(qiáng)。
添加回答
舉報