最短的内联集合初始化式?c#

本文关键字:初始化 集合 | 更新日期: 2023-09-27 18:06:36

我可以写一个内联集合初始化器的最简洁/最短的方法是什么?

我不关心引用名,索引很好,项目只需要在方法的范围内使用。

我认为匿名类型集合会更混乱,因为我必须每次都写键名。

我现在有

var foo = new Tuple<int, string, bool>[] 
{ 
   new Tuple<int, string, bool>(1, "x", true), 
   new Tuple<int, string, bool>(2, "y", false) 
};

最短的内联集合初始化式?c#

你能得到的最短的是用Tuple.Create代替new Tuple:

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

如果你使用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") };

还可以添加

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

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