程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#4.0中的dynamic關鍵字和ExpandoObject對象

C#4.0中的dynamic關鍵字和ExpandoObject對象

編輯:C#入門知識

我們做Web應用程序開發的程序員,我想大家對JavaScript的接觸一定不少,在JavaScript中我們經常用到一個功能,就是可以隨時隨地的新建一個對象,然後就可以自定義的給它定義自己需要的屬性,就如下面的簡單例子

 

\\代碼
    <script type="text/javascript">
function getObject(name) {
var obj = new Object();
//自定義兩個屬性
obj.Name = name;
obj.Sex = "男";
return obj;
}

function onbtnClick() {
var retobj = getObject("吖龍");//調用自定義的屬性
alert("姓名:"+retobj.Name + " 性別:" + retobj.Sex);
}
</script>

用下面代碼調用

 <input type="button" id="btnTest" value="自定義屬性" onclick="onbtnClick();" />

 

單擊自定義屬性按鈕後,會像我們意料的一樣獲取到了相應的自定義屬性值。

  曾經,我為上面的方便用法瘋狂和興奮過,這幾天看到了C#4.0也提供了這種用法,更是興奮不已,獲取你已經覺得早就已經熟運於心了,請原諒我的反應遲鈍和步伐慢。今天懷著分享的心給簡單介紹一下C#4.0中的關鍵字dynamic和對象ExpendoObject對象。

  我的類型,我做主,編譯器繞道過···

  dynamic最大的特點我想莫過於在它的類型在運行時才確定,這也是它與往靜態類型關鍵字的最大區別。如果你在你的代碼操作中用到了dynamic關鍵字去定義一個變量時,那麼這個變量在編譯的時候編譯器不會對它進行類型檢查,允許它到運行的時候再做解釋。在大多數情況下,dynamic 類型與 object 類型的行為是一樣的。但是,不會用編譯器對包含 dynamic 類型表達式的操作進行解析或類型檢查,只是將有關該變量編譯到類型 object 的變量中以及有關它的操作信息打包在一起,在運行時再解釋運行。像下面的代碼:

            dynamic objDynamic = objDynamic + 1;//編譯通過
            object objObject = objObject + 1;//編譯不通過

原因就是編譯器不對dynamic進行類型的檢查,這也是兩者最大的區別。 

  dynamic關鍵字可以用於很多情況,比如在聲明中,作為屬性、字段、索引器、參數、返回值或類型約束的類型等等,用法和其他基本類型的關鍵字很類似,更詳細可以看Dynamic(C#參考)

   為了實現一個像上面JavaScript中的功能,在C#4.0中新添加了一個ExpandoObject對象,它位於程序集  System.Core(在 System.Core.dll 中)命名空間  System.Dynamic 中,他的用法和我上面舉得JavaScript的用法很類似,下面偷懶一下,借用用msdn的一個例子:

 

  

  

 

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