首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 4.0 新特性總覽(一):dynamic 類型基礎

     編輯:關於C語言

背景

Anders Hejlsberg 在 PDC08 發表《The Future of C#》。C# 1.0 模仿 Java、2.0 加入泛型、3.0 語法糖與 LINQ、4.0 引入動態特性,持續提升開發產能。

C# 版本演進

註:VS2010 統一 .NET Framework / C# / CLR 版本號為 4.0。

Dynamically Typed Object

新關鍵字 dynamic:靜態類型為 dynamic,但繞過編譯時期型別檢查,調用解析延遲至執行期。

反射 vs dynamic

舊版反射寫法:


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

C# 4.0 dynamic:


dynamic calc = GetCalculator();
int sum = calc.Add(10, 20); // 編譯通過,執行時解析 Add 方法

dynamic 特性

  • 編譯器允許對 dynamic 物件調用任何成員,不檢查存在性。
  • 執行時若成員不存在,拋出 RuntimeBinderException。
  • 大多數動態運算結果仍為 dynamic,IntelliSense 顯示為 dynamic。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved