2016-08-02 26 views

回答

4

由於IsInstanceOfType是一種需要使用object的方法,因此值類型將被裝箱。另一方面,運營商is將不會執行裝箱。

當您在編譯時知道T時,使用第一種方法會更好,無論是作爲特定類型還是通用類型參數。第二種方法是當代碼在運行時獲得類型時的情況,因爲第一種方法不適用:

Type typeKnownAtRuntime = ... 
var result2 = typeKnownAtRuntime.IsInstanceOfType(x); // This works 
var incorrect = x is typeKnownAtRuntime; // This does not compile 
+1

你的意思是[盒裝](https://msdn.microsoft.com/en-us/library/yz2be5wk.aspx)。你可能想詳細說明一下爲什麼這很糟糕。 –

+0

是否有理由在'is'上使用'IsInstanceOfType'?你剛纔提出了一個很好的例子,現在我想知道爲什麼我會用前者。 – MarqueIV

+0

@MarqueIV我剛剛編輯答案提到這一點。 – dasblinkenlight

相關問題