max*_*axp 15 c# initialization
我可以编写内联集合初始化程序的最简单/最短的方法是什么?
我不关心引用名称,索引很好,只需要在方法范围内使用该项目.
我认为匿名类型集合会更加混乱,因为我每次都必须继续写密钥名称.
我现在有
var foo = new Tuple<int, string, bool>[]
{
new Tuple<int, string, bool>(1, "x", true),
new Tuple<int, string, bool>(2, "y", false)
};
Run Code Online (Sandbox Code Playgroud)
我希望c#4.0会有我错过的东西.
Dan*_*rth 17
您可以获得的最短时间是使用Tuple.Create
而不是new Tuple
:
var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) };
Run Code Online (Sandbox Code Playgroud)
如果你使用Tuple.Create(1,"x",true)
而不是新东西,那里的空间会少一些- 你也可以new Tuple<tint, string, bool>
在数组之前剥离东西:
var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) };
Run Code Online (Sandbox Code Playgroud)
或者拿这个:
Func<int, string, bool, Tuple<int, string, bool>> T = (i, s, b) => Tuple.Create(i,s,b);
var foo = new [] { T(1, "x", true), T(2, "y", false) };
Run Code Online (Sandbox Code Playgroud)
甚至
Func<int, string, Tuple<int, string, bool>> T = (i, s) => Tuple.Create(i,s,true);
Func<int, string, Tuple<int, string, bool>> F = (i, s) => Tuple.Create(i,s,false);
var foo = new [] { T(1, "x"), F(2, "y") };
Run Code Online (Sandbox Code Playgroud)