如果可能:爲什麼通用接口不能實現動態類型?
IList <dynamic> = new List <dynamic>;
或:
class A <T>
{
A(T){}
}
class B: A <dynamic> {}
。爲什麼不可能這樣做:
class U: IEnumerable <dynamic> {}
?
如果可能:爲什麼通用接口不能實現動態類型?
IList <dynamic> = new List <dynamic>;
或:
class A <T>
{
A(T){}
}
class B: A <dynamic> {}
。爲什麼不可能這樣做:
class U: IEnumerable <dynamic> {}
?
最簡單的思考方式 - 動態不是一種類型。
dynamic是一個編譯器指令,關閉所有編譯時檢查,並在運行時實現它們。
當你聲明一個變量的動態:
dynamic t = 123;
t = t.Length; // crashes at runtime
實際上你是在聲明變量爲System.Object,則表達式關閉所有編譯時檢查其涉及到的變量:
object t = 123;
unchecked_for_errors
{
t = t.Length;
}
你不能使用<dynamic>
就好像它是一種類型,因爲它確實不是一種。
改爲使用<object>
。
你可以在我的問題中明確地看到我正在使用動態作爲常規類型。 –
問題的答案是鏈接http://programmers.stackexchange.com/questions/322034/why-generic-interface-cannot-implement-dynamic-type。 –