C# 单变量匿名对象初始化
我发现了这样一句话:C# 单变量匿名对象初始化,c#,.net,object-initializers,C#,.net,Object Initializers,我发现了这样一句话: var myObject = new MyClass { 42 }; 我想知道是否有可能进行这种手术。文档中说,如果要定义匿名类型,则必须使用对象初始值设定项,“所以这很明显,但我在大括号中找不到关于单独整数的任何信息。” new MyClass(42) 如果定义了一个,或者像这样设置了任何可设置的属性 new MyClass { MeaningOfLife=42 }; 您提供的代码不是类初始值设定项,也不是匿名类型的代码。该代码适用于的类类型是集合,但可以将其定
var myObject = new MyClass { 42 };
我想知道是否有可能进行这种手术。文档中说,如果要定义匿名类型,则必须使用对象初始值设定项,“所以这很明显,但我在大括号中找不到关于单独整数的任何信息。”
new MyClass(42)
如果定义了一个,或者像这样设置了任何可设置的属性
new MyClass { MeaningOfLife=42 };
您提供的代码不是类初始值设定项,也不是匿名类型的代码。该代码适用于的类类型是集合,但可以将其定义为:
public class MyClass : IEnumerable<int>
{
private List<int> _list = new List<int>();
public void Add(int x)
{
Console.WriteLine(x);
_list.Add(x);
}
public IEnumerator<int> GetEnumerator()
{
return _list.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return _list.GetEnumerator();
}
}
您将获得写入控制台的42
该语法是集合初始值设定项语法,它基本上要求类实现IEnumerable
,并具有公共Add(T值)
方法
然后还可以添加多个值:
var myObject = new MyClass { 42, 43, 44 };
这个答案是错误的。问题中提供的代码对于集合初始值设定项完全有效。
var myObject = new MyClass { 42, 43, 44 };