最短的内联集合初始化程序? C#

时间:2011-08-23 09:10:38

标签: 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) 
};

我希望c#4.0会有错过的东西。

3 个答案:

答案 0 :(得分:17)

您可以使用Tuple.Create代替new Tuple

var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) };

答案 1 :(得分:5)

如果你使用Tuple.Create(1,"x",true)而不是新东西,那么

的空间会少一些 - 而且你也可以在数组之前删除new Tuple<tint, string, bool>内容:

var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) };

或采取这一个:

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) };

甚至

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") };

答案 2 :(得分:0)

您还可以添加

using MyTuple= System.Tuple<int, string, bool>;

using声明的最后,然后使用MyTuple代替较长版本。