泛型

C#中的泛型一直支援到執行時:使用 C#構建的泛型型別即使在編譯為 CIL 之後也會保留其通用語義。

這實際上意味著,在 C#中,可以反映泛型型別並在宣告它們時檢視它們,或者檢查物件是否是泛型型別的例項。這與型別擦除形成對比,型別擦除在編譯期間刪除泛型型別資訊。它也與泛型的模板方法形成對比,其中多個具體泛型型別在執行時變為多個非泛型型別,並且進一步例項化原始泛型型別定義所需的任何後設資料都將丟失。

但是,在反映泛型型別時要小心:泛型型別的名稱將在編譯時被更改,用反引號替換有角度的括號和型別引數的名稱,後跟通用型別引數的數量。因此,Dictionary<TKey, Tvalue> 將被翻譯為Dictionary`2