我爱tuples。它们使您可以快速将相关信息分组在一起,而不必为其编写结构或类。在重构非常本地化的代码时,这非常有用。
但是,初始化它们的列表似乎有点多余。

var tupleList = new List<Tuple<int, string>>
{
    Tuple.Create( 1, "cow" ),
    Tuple.Create( 5, "chickens" ),
    Tuple.Create( 1, "airplane" )
};
有没有更好的办法?我希望按照Dictionary initializer的解决方案。
Dictionary<int, string> students = new Dictionary<int, string>()
{
    { 111, "bleh" },
    { 112, "bloeh" },
    { 113, "blah" }
};
我们不能使用类似的语法吗?

最佳答案

C#7.0允许您执行以下操作:

  var tupleList = new List<(int, string)>
  {
      (1, "cow"),
      (5, "chickens"),
      (1, "airplane")
  };

如果不需要List,而只需要一个数组,则可以执行以下操作:
  var tupleList = new(int, string)[]
  {
      (1, "cow"),
      (5, "chickens"),
      (1, "airplane")
  };

如果您不喜欢“Item1”和“Item2”,则可以执行以下操作:
  var tupleList = new List<(int Index, string Name)>
  {
      (1, "cow"),
      (5, "chickens"),
      (1, "airplane")
  };

或数组:
  var tupleList = new (int Index, string Name)[]
  {
      (1, "cow"),
      (5, "chickens"),
      (1, "airplane")
  };

可以让您执行以下操作:tupleList[0].IndextupleList[0].Name
Framework 4.6.2及更低版本

您必须从Nuget软件包管理器安装 System.ValueTuple

Framework 4.7及更高版本

它内置在框架中。不要安装System.ValueTuple。实际上,将其删除从bin目录中将其删除。

注意:在现实生活中,我将无法在牛,鸡或飞机之间进行选择。我真的会被撕成碎片。

09-28 06:24