对象初始化器(object initializers)
定义如下类
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}; //okarraylist al = new arraylist{1, 2, 3, 4}; //okarraylist 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
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔