W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
動態(tài)綁定會將類型,成員和操作的解析過程從編譯時延遲到運行時。
使用上下文關(guān)鍵字 dynamic
聲明動態(tài)類型:
dynamic d = GetSomeObject();
d.OneMethod();
動態(tài)類型期望 d
的運行時類型具有OneMethod
方法。
由于d是動態(tài)的,編譯器會將OneMethod綁定到d,直到運行時。
動態(tài)類型具有來自所有其他類型的隱式轉(zhuǎn)換:
int i = 7;
dynamic d = i;
long j = d; // No cast required (implicit conversion)
要使轉(zhuǎn)換成功,動態(tài)對象的運行時類型必須可隱式轉(zhuǎn)換為目標(biāo)靜態(tài)類型。
以下示例會拋出RuntimeBinderException,因為int不能隱式轉(zhuǎn)換為short:
int i = 7;
dynamic d = i;
short j = d; // throws RuntimeBinderException
var
使編譯器找出類型。
使運行時確定類型。dynamic
為了顯示:
dynamic x = "hello"; // Static type is dynamic, runtime type is string
var y = "hello"; // Static type is string, runtime type is string
int i = x; // Runtime error
int j = y; // Compile-time error
用 var
聲明的變量的靜態(tài)類型可以是動態(tài)的:
dynamic x = "hello";
var y = x; // Static type of y is dynamic
int z = y; // Runtime error
字段,屬性,方法,事件,構(gòu)造函數(shù),索引器,運算符和轉(zhuǎn)換都可以動態(tài)調(diào)用。
涉及動態(tài)操作數(shù)的表達式通常本身是動態(tài)的:
dynamic x = 2;
var y = x * 3; // Static type of y is dynamic
將動態(tài)表達式轉(zhuǎn)換為靜態(tài)類型會生成靜態(tài)表達式:
dynamic x = 2;
var y = (int)x; // Static type of y is int
構(gòu)造函數(shù)調(diào)用總是產(chǎn)生靜態(tài)表達式。
在此示例中,x靜態(tài)類型為StringBuilder:
dynamic capacity = 1;
var x = new System.Text.StringBuilder (capacity);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: