Est-il possible de créer une liste de ValueTuple en C# 7?Comment créer une liste de ValueTuple?
comme ceci:
List<(int example, string descrpt)> Method()
{
return Something;
}
Est-il possible de créer une liste de ValueTuple en C# 7?Comment créer une liste de ValueTuple?
comme ceci:
List<(int example, string descrpt)> Method()
{
return Something;
}
Vous recherchez une syntaxe comme ceci:
List<(int, string)> list = new List<(int, string)>();
list.Add((3, "test"));
list.Add((6, "second"));
Vous pouvez utiliser comme ça dans votre cas:
List<(int, string)> Method() =>
new List<(int, string)>
{
(3, "test"),
(6, "second")
};
Vous pouvez également nommer les valeurs avant de retourner:
List<(int Foo, string Bar)> Method() =>
...
Et vous pouvez recevoir les valeurs en (re) en les nommant:
List<(int MyInteger, string MyString)> result = Method();
var firstTuple = result.First();
int i = firstTuple.MyInteger;
string s = firstTuple.MyString;
thx Guilherme, répondre à ma question – ArthNRick
C'est mieux pour nommer les champs dans la définition de la méthode. –
Cette syntaxe est mieux appliquée à c# 6
mais peut être utilisé dans c# 7
aussi bien. D'autres réponses sont beaucoup plus correctes car les ont tendance à utiliser ValueTuple
au lieu de Tuple
utilisé ici. Vous pouvez voir les différences here pour 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"),
};
}
Pas besoin d'utiliser "Tuple" du tout –
Je préfère sûrement ce sintax, est plus lisible et clair que les autres. – Gusman
Je ne sais pas pourquoi il y a eu des votes négatifs, ce n'est pas une mauvaise réponse quand même ... –
Bien sûr, vous pouvez le faire:
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);
Pourquoi ne pas essayer? –
Je suis presque tenté de downvote puisque c'est la syntaxe requise pour renvoyer une liste de tuples nommés. Pourquoi cette question? –
Je suppose que la question ne portait pas sur le type de retour de la méthode, mais plutôt sur le "Quelque chose" manquant **. – quetzalcoatl