在.NET中,似乎有兩種方法可將類型傳遞給方法或類。第一種是通過泛型,我們在其中傳遞一個類型作爲特殊參數。typeof(T)vs <T>
如:
var list = new List<MyClass>();
的另一種方法是顯式使用typeof
運營商如:
var pe = Expression.ParameterExpression(typeof(MyClass), "myinstance");
我的問題是關於在一個統一的接口,需要一個類型的方法的差異參數。爲什麼不能按照如下方式完成上述說明?:
var pe = Expression.ParameterExpression<MyClass>("myinstance");
是否因爲編譯器的行爲方式需要兩種語義差異?當編譯器處理泛型參數時,它是否簡單地執行替換ala lambda演算?鑑於typeof
風格的方法需要Type
類的實際實例來推斷屬性和屬性?
謝謝。
這些「特殊參數」被稱爲類型參數,所以你知道:) – 2011-04-01 18:06:12
想象一下廣闊的太平洋。 Type在日本,T在加利福尼亞州。 T比夏威夷快上千倍。 – 2011-04-01 19:13:22
@Richard。我意識到。我不知道爲什麼我這樣表達。泛型在學術上被稱爲參數多態性,所以類型參數緊隨其後。 – 2011-04-01 19:35:23