dynamic英音:[dai'næmik]美音:[daɪ'næmɪk]
asynchronous英音:[ei'siŋkrənəs]美音:[e'sɪŋkrənəs]
VAR 是3.5新出的一個定義變數的類型其實也就是弱化類型的定義VAR可代替任何類型編譯器會根據上下文來判斷你到底是想用什麼類型的至於什麼情況下用到VAR 我想就是你無法確定自己將用的是什麼類型就可以使用VAR 類似 OBJECT但是效率比OBJECT高點使用var定義變數時有以下四個特點:1. 必須在定義時初始化。也就是必須是var s = “abcd”形式,而不能是如下形式:var s;s = “abcd”;2. 一但初始化完成,就不能再給變數賦與初始化實值型別不同的值了。3. var要求是局部變數。4. 使用var定義變數和object不同,它在效率上和使用強型別方式定義變數完全一樣。
var表示“變數的類型是在編譯時間決定的”,但是dynamic表示“變數的類型是在運行時決定的”。因此,dynamic與var具有截然不同的含義。
var讓你在初始設定變數時少輸入一些字,編譯器會根據右值來推斷出變數的類型。dynamic更厲害,它告訴編譯器,根本就別理究竟是啥類型,運行時再推斷不遲。
var只能用於局部變數的定義,你不能把類的屬性定義成 var,也不能把方法的傳回值類型或者是參數類型定義成var。dynamic就沒有這些局限了。
dynamic類型並沒有跳過類型校正,只是延遲到了運行時。如果在運行時,檢測到類型不相容,照樣會拋出異常。
你可能在以下情況下使用dynamic:
1.COM對象
2.動態語言(如IronPython,IronRuby等)對象
3.反射對象
4.C# 4.0中動態建立的對象
dynamic d = new _Default();
d.MyMethod(22); // 方法調用
d.A = d.B; // 屬性賦值
d[“one”] = d[“two”]; // 索引器賦值
int i = d + 100; // 運算子調用
string s = d(1,2); // 委託調用
C#會增加更多的特性以支援非同步編程(Asynchronous Programming)。
Reflection