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());
7.0

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 .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow