程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c# 4.0新特性一覽(1)

c# 4.0新特性一覽(1)

編輯:關於C語言

終於靜下心來仔細聽了一遍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);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved