C# Language
Le tuple
Ricerca…
Creare tuple
Le tuple sono create usando tipi generici Tuple<T1>
- Tuple<T1,T2,T3,T4,T5,T6,T7,T8>
. Ciascuno dei tipi rappresenta una tupla contenente da 1 a 8 elementi. Gli elementi possono essere di diversi tipi.
// tuple with 4 elements
var tuple = new Tuple<string, int, bool, MyClass>("foo", 123, true, new MyClass());
È inoltre possibile creare Tuple.Create
usando i metodi statici Tuple.Create
. In questo caso, i tipi di elementi vengono dedotti dal compilatore C #.
// tuple with 4 elements
var tuple = Tuple.Create("foo", 123, true, new MyClass());
Dal momento che C # 7.0, le tuple possono essere facilmente create usando ValueTuple .
var tuple = ("foo", 123, true, new MyClass());
Gli elementi possono essere nominati per facilitare la decomposizione.
(int number, bool flag, MyClass instance) tuple = (123, true, new MyClass());
Accesso agli elementi di tuple
Per accedere agli elementi tuple utilizzano Item1
- Item8
proprietà. Saranno disponibili solo le proprietà con un numero di indice inferiore o uguale alla dimensione della tupla (ovvero non è possibile accedere Item3
proprietà Item3
in Tuple<T1,T2>
).
var tuple = new Tuple<string, int, bool, MyClass>("foo", 123, true, new MyClass());
var item1 = tuple.Item1; // "foo"
var item2 = tuple.Item2; // 123
var item3 = tuple.Item3; // true
var item4 = tuple.Item4; // new My Class()
Confronto e ordinamento delle tuple
Le tuple possono essere confrontate in base ai loro elementi.
Ad esempio, una enumerabile i cui elementi sono di tipo Tuple
può essere ordinata in base agli operatori di confronto definiti su un elemento specificato:
List<Tuple<int, string>> list = new List<Tuple<int, string>>();
list.Add(new Tuple<int, string>(2, "foo"));
list.Add(new Tuple<int, string>(1, "bar"));
list.Add(new Tuple<int, string>(3, "qux"));
list.Sort((a, b) => a.Item2.CompareTo(b.Item2)); //sort based on the string element
foreach (var element in list) {
Console.WriteLine(element);
}
// Output:
// (1, bar)
// (2, foo)
// (3, qux)
O per invertire l'uso di tipo:
list.Sort((a, b) => b.Item2.CompareTo(a.Item2));
Restituisce più valori da un metodo
Le tuple possono essere utilizzate per restituire più valori da un metodo senza utilizzare parametri. Nell'esempio seguente, AddMultiply
viene utilizzato per restituire due valori (somma, prodotto).
void Write()
{
var result = AddMultiply(25, 28);
Console.WriteLine(result.Item1);
Console.WriteLine(result.Item2);
}
Tuple<int, int> AddMultiply(int a, int b)
{
return new Tuple<int, int>(a + b, a * b);
}
Produzione:
53
700
Ora C # 7.0 offre un modo alternativo per restituire più valori dai metodi che utilizzano le tuple valore Ulteriori informazioni sulla struttura ValueTuple
.