|
回顧C(jī)#發(fā)展的歷史,C#1.0完全是模仿Java,并保留了C/C++的一些特性如struct,新學(xué)者很容易上手;C#2.0加入了泛型,也與Java1.5的泛型如出一轍;C#3.0加入了一堆語法糖,并在沒有修改CLR的情況下引入了Linq,簡直是神來之筆,雖然很多項(xiàng)目出于各種各樣如性能之類的原因沒有采用,但非常適合小型程序的快速開發(fā),減輕了程序員的工作量,也提高了代碼的可讀性;C#4.0增加了動(dòng)態(tài)語言的特性,從里面可以看到很多Javascript、Python這些動(dòng)態(tài)語言的影子。雖然越來越偏離靜態(tài)語言的道路,但從另一個(gè)角度來說,這些特性也都是為了提高程序員的生產(chǎn)力。至于被接受與否,還是讓時(shí)間來說話吧。
PS:這里面還有一點(diǎn)版本號的小插曲——VS2008所對應(yīng)的.NET Framework是3.5,C#是3.0,CLR是2.0,及其混亂,MS終于下決心在VS2010中把這三個(gè)版本號都統(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)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。