c# 4.0新特性一覽

來源:互聯網
上載者:User

終於靜下心來仔細聽了一遍Anders Hejlsberg(Visual Studio組的TECHNICAL FELLOW,C#的設計者之 一)在PDC08上講的“The Future of C#”(http://channel9.msdn.com/pdc2008/TL16/)。

回顧C#發展的曆史,C#1.0完全是模仿Java,並保留了C/C++的一些特性如struct,新學者很容易上手 ;C#2.0加入了泛型,也與Java1.5的泛型如出一轍;C#3.0加入了一堆文法糖,並在沒有修改CLR的情況下 引入了Linq,簡直是神來之筆,雖然很多項目出於各種各樣如效能之類的原因沒有採用,但非常適合小型 程式的快速開發,減輕了程式員的工作量,也提高了代碼的可讀性;C#4.0增加了動態語言的特性,從裡 面可以看到很多javascript、python這些動態語言的影子。雖然越來越偏離靜態語言的道路,但從另一個 角度來說,這些特性也都是為了提高程式員的生產力。至於被接受與否,還是讓時間來說話吧。

PS:這裡面還有一點版本號碼的小插曲——VS2008所對應的.Net Framework是3.5,C#是3.0,CLR是2.0 ,及其混亂,MS終於下決心在VS2010中把這三個版本號碼都統一成了4.0,於是CLR3不知所終……

Dynamically Typed Object

C#4.0加入了dynamic關鍵字,可以申明一個變數的static類型為dynamic(有點繞口)。

在3.0及之前,如果你不知道一個變數的類型,而要去調用它的一個方法,一般會用到反射:

object calc = GetCalculator();
Type calcType = calc.GetType();
object res = calcType.InvokeMember("Add",
BindingFlags.InvokeMethod, null,
new object[] { 10, 20 });
int sum = Convert.ToInt32(res);

有了dynamic,就可以把上面代碼簡化為:

dynamic calc = GetCalculator();
int sum = calc.Add(10, 20);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.