4
我有一個從C#方法拋出的異常,它將一個通用列表作爲參數。爲什麼泛型類型的名稱在.NET堆棧跟蹤中發生了重大變化?
private static void DoWork(List<ClassName> a)
{
}
當它拋出一個異常時,堆棧跟蹤顯示一個`1而不是列表的類名。爲什麼是這樣?這是堆棧跟蹤所具有的。
...
at DoWork(List`1 a).
...
我有一個從C#方法拋出的異常,它將一個通用列表作爲參數。爲什麼泛型類型的名稱在.NET堆棧跟蹤中發生了重大變化?
private static void DoWork(List<ClassName> a)
{
}
當它拋出一個異常時,堆棧跟蹤顯示一個`1而不是列表的類名。爲什麼是這樣?這是堆棧跟蹤所具有的。
...
at DoWork(List`1 a).
...
之所以會出現堆棧跟蹤是由CLR而不是C#生成的。因此它使用CLR類型名稱與C#類型名稱。
在元數據提供給通用類型(在C#和VB.Net)的類型名稱的格式TypeName`Number其中
這也是爲什麼具有幾個相同名稱但通用參數數量不同的泛型類是合法的。在CLR級別,他們有不同的類型名稱。
@Jared,嘿,我們同時增加了額外的細節。 :○ – 2009-09-02 18:19:13