C#如何创建和初始化ValueTuples的静态数组?

时间:2019-02-27 19:36:15

标签: c# arrays tuples static-initialization

我想初始化ValueTuples的静态只读数组,我想使用此SO answer中的方法:

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

但是它不适用于静态成员,我必须声明tupleList的类型。我可以像这样的元组来做,但是我不知道如何作为ValueTuple来做:

static readonly Tuple<uint, string>[] tupleList= new Tuple<uint, string>[]
{
    new Tuple<uint, string>(0x1, "string1"),
    ...
};

但是,如果我能找到正确的类型,我更喜欢使用更简洁的格式,到目前为止,我尝试了很多没有运气的类型。

1 个答案:

答案 0 :(得分:0)

您不能使用“ cleaner” var(隐式,但仍然是强类型)类型,但是可以按照注释者的建议初始化一个元组。您可以避免的“最干净”是这样的,它在数组上使用类型推断:

(int Index, string Name)[] tupleList = {
    (1, "cow"),
    (5, "chickens"),
    (1, "airplane")
};

至少,这样可以避免两次指定类型,这是人们使用var的原因之一。

在声明成员变量时,该语言不支持使用var。静态字段和实例字段都是如此。

有一个historic reason。这并不是说如果您提出更改,并且由社区审核,则无法更改。