Как создать список ValueTuple?

можно ли создать список ValueTuple в C# 7?

такой:

List<(int example, string descrpt)> Method()
{
    return Something;
}

3 ответов


вы ищете синтаксис такой:

List<(int, string)> list = new List<(int, string)>();
list.Add((3, "test"));
list.Add((6, "second"));

вы можете использовать это в вашем случае:

List<(int, string)> Method() => 
    new List<(int, string)>
    {
        (3, "test"),
        (6, "second")
    };

вы можете назвать значения перед возвратом:

List<(int Foo, string Bar)> Method() =>
    ...

и вы можете получить значения, в то время как (re)называя их:

List<(int MyInteger, string MyString)> result = Method();
var firstTuple = result.First();
int i = firstTuple.MyInteger;
string s = firstTuple.MyString;

конечно, вы можете сделать это:

List<(int example, string descrpt)> Method() => new List<int, string> { (2, "x") };

var data = Method();
Console.WriteLine(data.First().example);
Console.WriteLine(data.First().descrpt);

этот синтаксис лучше всего применять c# 6 но может использоваться в c# 7 Как хорошо. Другие ответы гораздо более правильны, потому что имеют тенденцию использовать ValueTuple вместо Tuple используется здесь. Вы можете увидеть различия здесь на ValueTuple

List<Tuple<int, string>> Method()
{
   return new List<Tuple<int, string>>
   {
       new Tuple<int, string>(2, "abc"),
       new Tuple<int, string>(2, "abce"),
       new Tuple<int, string>(2, "abcd"),
   };
}