对象初始化器(Object Initializers)
时间:2011-02-03 来源:铁皮青蛙
public class MyClass
{
public int X;
public int Y;
public MyClass()
{
}
public MyClass(int a, int b)
{
X = a;
Y = b;
}
}
对象初始化器Object Initializers
创建对象的时候可以使用如下语法:
MyClass mc = new MyClass() { X = 100, Y = 200 };
效果等同于
MyClass mc = new MyClass();
mc.X = 100;
mc.Y = 200;
使用默认构造函数时可以省略括号(resharper也建议省略括号)
MyClass mc = new MyClass { X = 100, Y = 200 };
如果使用带参数的构造器,初始化参数将被覆盖,比如下面的代码,最终x,y的值分别为100,200
MyClass mc = new MyClass(1, 2) { X = 100, Y = 200 };
Initializing Inner Types
略,参考相关资料
集合初始化器(Collection Initializers):
可以使用类似初始化数组的语法初始化集合类, {}内的内容添加为集合成员,和数组初始化不一样的是必须显式调用构造函数
ArrayList al = new ArrayList(){1, 2, 3, 4}; //ok
ArrayList al = new ArrayList{1, 2, 3, 4}; //ok
ArrayList al = { 1, 2, 3, 4 }; //compile failed
应用范围:使用这种方式初始化的类必须实现了IEnumerable接口,同时必须定义了名为Add的方法,并且Add方法的形参列表必须与初始化时的实参一致。
public class SomeClass : IEnumerable
{
public void Add(int i)
{
Console.WriteLine("add value {0}", i);
}
public void Add(int i, string s)
{
Console.WriteLine("add value {0}, {1}", i, s);
}
public IEnumerator GetEnumerator()
{
return null; //不影响初始化
}
}
SomeClass a = new SomeClass { 1, 2, 3}; //ok
SomeClass b = new SomeClass { {1, "aa"}, {2, "bb"}, {3,"cc"} }; //ok, 初始化Dictionary使用类似的语法
SomeClass c = new SomeClass { "aa", "bb", "cc" }; //compile failed

<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载- 4 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载73.78MB · 97℃
1970-01-01
- 5 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载43.7 MB · 99℃
1970-01-01
- 6 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载110.69MB · 97℃
1970-01-01