C# Language
Krotki
Szukaj…
Tworzenie krotek
Krotki są tworzone przy użyciu typów ogólnych Tuple<T1>
- Tuple<T1,T2,T3,T4,T5,T6,T7,T8>
. Każdy z typów reprezentuje krotkę zawierającą od 1 do 8 elementów. Elementy mogą być różnych typów.
// tuple with 4 elements
var tuple = new Tuple<string, int, bool, MyClass>("foo", 123, true, new MyClass());
Krotki można również tworzyć przy użyciu statycznych metod Tuple.Create
. W takim przypadku typy elementów są wywnioskowane przez kompilator C #.
// tuple with 4 elements
var tuple = Tuple.Create("foo", 123, true, new MyClass());
Od wersji C # 7.0 Tuple można łatwo tworzyć za pomocą ValueTuple .
var tuple = ("foo", 123, true, new MyClass());
Elementy można nazwać w celu łatwiejszego rozkładu.
(int number, bool flag, MyClass instance) tuple = (123, true, new MyClass());
Dostęp do elementów krotkowych
Aby uzyskać dostęp do elementów krotkowe używać Item1
- Item8
właściwości. Item3
dostępne tylko właściwości o numerze indeksu mniejszym lub równym krotce (tzn. Nie można uzyskać dostępu do właściwości Tuple<T1,T2>
w 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()
Porównywanie i sortowanie krotek
Krotki można porównać na podstawie ich elementów.
Na przykład, Tuple
którego elementy są typu Tuple
można sortować na podstawie operatorów porównań zdefiniowanych na określonym elemencie:
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)
Lub odwróć sortowanie:
list.Sort((a, b) => b.Item2.CompareTo(a.Item2));
Zwróć wiele wartości z metody
Krotki mogą być używane do zwracania wielu wartości z metody bez użycia parametrów out. W poniższym przykładzie AddMultiply
jest używany do zwrócenia dwóch wartości (suma, produkt).
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);
}
Wynik:
53
700
Teraz C # 7.0 oferuje alternatywny sposób zwracania wielu wartości z metod przy użyciu krotek wartości Więcej informacji o strukturze ValueTuple
.