|
回顧C(jī)#發(fā)展的歷史,C#1.0完全是模仿Java,并保留了C/C++的一些特性如struct,新學(xué)者很容易上手;C#2.0加入了泛型,也與Java1.5的泛型如出一轍;C#3.0加入了一堆語(yǔ)法糖,并在沒(méi)有修改CLR的情況下引入了Linq,簡(jiǎn)直是神來(lái)之筆,雖然很多項(xiàng)目出于各種各樣如性能之類的原因沒(méi)有采用,但非常適合小型程序的快速開發(fā),減輕了程序員的工作量,也提高了代碼的可讀性;C#4.0增加了動(dòng)態(tài)語(yǔ)言的特性,從里面可以看到很多Javascript、Python這些動(dòng)態(tài)語(yǔ)言的影子。雖然越來(lái)越偏離靜態(tài)語(yǔ)言的道路,但從另一個(gè)角度來(lái)說(shuō),這些特性也都是為了提高程序員的生產(chǎn)力。至于被接受與否,還是讓時(shí)間來(lái)說(shuō)話吧。
PS:這里面還有一點(diǎn)版本號(hào)的小插曲——VS2008所對(duì)應(yīng)的.NET Framework是3.5,C#是3.0,CLR是2.0,及其混亂,MS終于下決心在VS2010中把這三個(gè)版本號(hào)都統(tǒng)一成了4.0,于是CLR3不知所終……
Dynamically Typed Object
C#4.0加入了dynamic關(guān)鍵字,可以申明一個(gè)變量的static類型為dynamic(有點(diǎn)繞口)。
在3.0及之前,如果你不知道一個(gè)變量的類型,而要去調(diào)用它的一個(gè)方法,一般會(huì)用到反射:
object calc = GetCalculator();Type calcType = calc.GetType();object res = calcType.InvokeMember("Add",BindingFlags.InvokeMethod, null,new object[] { 10, 20 });int sum = Convert.ToInt32(res);
NET技術(shù):C# 4.0下的新特性,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。