Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最短内联集合初始值设定项?C#_C#_Initialization - Fatal编程技术网

最短内联集合初始值设定项?C#

最短内联集合初始值设定项?C#,c#,initialization,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) }

编写内联集合初始值设定项的最简单/最短方法是什么

我不关心引用名称,索引很好,并且该项只需要在方法的范围内使用

我认为匿名类型集合会更混乱,因为每次我都必须继续写密钥名

我现在有

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

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

如果你使用
元组,那里的空间会少一点。创建(1,“x”,true)
而不是新的东西-你也可以在数组之前去掉
新元组的东西:

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 T=(i,s,b)=>Tuple.Create(i,s,b);
var foo=new[]{T(1,“x”,真),T(2,“y”,假)};
甚至

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") };
Func T=(i,s)=>Tuple.Create(i,s,true);
Func F=(i,s)=>Tuple.Create(i,s,false);
var foo=new[]{T(1,“x”),F(2,“y”)};

您能得到的最短路径是使用
元组。创建
而不是
新元组

var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) };
您还可以添加

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

结束时,使用
声明,然后使用
MyTuple
而不是较长的版本。

您想要最短或最整洁的版本吗?如果使用较多,您可以编写自己的类,该类具有
Add(int,string,bool)
方法,然后使用集合初始值设定项,如
var foo=new MyCollection{{1,“x”,true},{2,“y”,false}顺便说一句,减价提供了一种比您刚才所做的更容易格式化代码块的方法-只需将每行(未缩放的)缩进四个空格!看我的编辑哦-谢谢-试过“按钮”,但每一行都会停止。。。。我想这可能会让我在未来更快;)@CKoenig:选择所有要格式化的代码,然后按下按钮。这很有效。顺便说一下:对于OP:F#来说,它将在没有任何技巧的情况下完成此操作-(1,“x”,true)是否有一个元组allready;)谢谢,F#还是有点吓人!