【发布时间】:2009-09-02 18:12:14
【问题描述】:
我从 C# 方法中抛出了一个异常,该方法将通用列表作为参数。
private static void DoWork(List<ClassName> a)
{
}
当它引发异常时,堆栈跟踪会显示 `1 而不是列表的类名。为什么是这样?这就是堆栈跟踪的内容。
...
at DoWork(List`1 a).
...
【问题讨论】:
标签: c# generics exception stack-trace
我从 C# 方法中抛出了一个异常,该方法将通用列表作为参数。
private static void DoWork(List<ClassName> a)
{
}
当它引发异常时,堆栈跟踪会显示 `1 而不是列表的类名。为什么是这样?这就是堆栈跟踪的内容。
...
at DoWork(List`1 a).
...
【问题讨论】:
标签: c# generics exception stack-trace
原因是堆栈跟踪是由 CLR 而不是 C# 生成的。因此,它使用 CLR 类型名称与 C# 类型名称。
元数据中泛型类型的类型名称(在 C# 和 VB.Net 中)的形式为 TypeName`Number where
这也是为什么拥有多个同名但泛型参数数量不同的泛型类是合法的。在 CLR 级别,它们具有不同的类型名称。
【讨论】: