Ant*_*y D 7 c# generics exception stack-trace
我从C#方法抛出异常,它将通用列表作为参数.
private static void DoWork(List<ClassName> a)
{
}
Run Code Online (Sandbox Code Playgroud)
当它抛出异常时,堆栈跟踪显示"1"而不是列表的类名.为什么是这样?这就是堆栈跟踪的含义.
...
at DoWork(List`1 a).
...
Run Code Online (Sandbox Code Playgroud)
Jar*_*Par 17
原因是堆栈跟踪是由CLR而不是C#生成的.因此,它使用CLR类型名称与C#类型名称.
元数据中的泛型类型(在C#和VB.Net中)的类型名称具有TypeName`Number形式
这也是为什么有几个通用类具有相同名称但不同数量的通用参数是合法的.在CLR级别,它们具有不同的类型名称.