“什么类型的?”;新的{id=0}";在C#中?
我使用的是“什么类型的?”;新的{id=0}";在C#中?,c#,oop,C#,Oop,我使用的是var abc=new{id=0}在我的C#代码中,而不知道它到底是什么类型 它仅仅被称为对象吗?它是一种特殊类型的对象吗 我想知道,因为我不知道如何向这种对象添加字段 快速示例: 我有var abc=new{id=0}我想添加到abc字段name=“david”它创建了一个名为id的匿名类对象。留意细节。一旦创建对象,它就无法扩展 这是使用.net Reflector打开此类时的外观 [CompilerGenerated, DebuggerDisplay(@"\{ id = {id}
var abc=new{id=0}代码>在我的C#代码中,而不知道它到底是什么类型
它仅仅被称为对象吗?它是一种特殊类型的对象吗
我想知道,因为我不知道如何向这种对象添加字段
快速示例:
我有var abc=new{id=0}
我想添加到abc
字段name=“david”
它创建了一个名为id
的匿名类对象。留意细节。一旦创建对象,它就无法扩展
这是使用.net Reflector打开此类时的外观
[CompilerGenerated, DebuggerDisplay(@"\{ id = {id} }", Type="<Anonymous Type>")]
internal sealed class <>f__AnonymousType0<<id>j__TPar>
{
// Fields
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private readonly <id>j__TPar <id>i__Field;
// Methods
[DebuggerHidden]
public <>f__AnonymousType0(<id>j__TPar id);
[DebuggerHidden]
public override bool Equals(object value);
[DebuggerHidden]
public override int GetHashCode();
[DebuggerHidden]
public override string ToString();
// Properties
public <id>j__TPar id { get; }
}
[CompilerGenerated,DebuggerDisplay(@“\{id={id}}”,Type=”“)]
内部密封类f__匿名类型0
{
//田地
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
专用只读j_u_uTPAR i_u_u字段;
//方法
[调试程序隐藏]
公共f___匿名类型0(j__TPar id);
[调试程序隐藏]
公共覆盖布尔等于(对象值);
[调试程序隐藏]
公共覆盖int GetHashCode();
[调试程序隐藏]
公共重写字符串ToString();
//性质
公共j__TPar id{get;}
}
因此,它被编译为常规类。基本的区别是,它不能在方法范围之外使用。它是一个,也就是说,它没有可以在代码中使用的类型(尽管编译器生成了一个)
MSDN说:
类型名由编译器生成,在源代码级别不可用
如果要添加属性,只需执行以下操作:
var abc = new { id = 0, name = "david" };
我只能猜测,但可能是因为它不是真的正确。它确实有一个显式类型,只是类型是由编译器创建的,没有名称(编译器内部除外)。