在C#
中观察以下简单的匿名类型new { X = 5 };
在Reflector(省略对象方法覆盖)中看到的相应编译器生成的代码是:
[CompilerGenerated]
internal sealed class <>f__AnonymousType0<<X>j__TPar>
{
// Fields
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private readonly <X>j__TPar <X>i__Field;
// Methods
[DebuggerHidden]
public <>f__AnonymousType0(<X>j__TPar X)
{
this.<X>i__Field = X;
}
// Properties
public <X>j__TPar X
{
get
{
return this.<X>i__Field;
}
}
}
我的问题是WOE(地球上的什么)<X>j__TPar
?该类型在Reflector(双关语)中无处反映。
答案 0 :(得分:2)
<X>j__TPar
是<>f__AnonymousType0
类型定义中使用的泛型参数的名称。确实比T
更不易读,但保证永远不会与另一个名字冲突。