C# Language
tupler
Sök…
Skapa tuples
Tuples skapas med generiska typer Tuple<T1>
- Tuple<T1,T2,T3,T4,T5,T6,T7,T8>
. Var och en av typerna representerar en tupel som innehåller 1 till 8 element. Element kan vara av olika slag.
// tuple with 4 elements
var tuple = new Tuple<string, int, bool, MyClass>("foo", 123, true, new MyClass());
Tuples kan också skapas med statiska Tuple.Create
metoder. I det här fallet sluts elementens typer av C # Compiler.
// tuple with 4 elements
var tuple = Tuple.Create("foo", 123, true, new MyClass());
Sedan C # 7.0 kan Tuples enkelt skapas med ValueTuple .
var tuple = ("foo", 123, true, new MyClass());
Element kan namnges för enklare nedbrytning.
(int number, bool flag, MyClass instance) tuple = (123, true, new MyClass());
Åtkomst till tupelelement
För att få tillgång till tuple-element använder Item8
egenskaperna Item1
- Item8
. Endast egenskaperna med indexnummer som är mindre eller lika med tupelstorleken kommer att finnas tillgängliga (dvs man kan inte få tillgång till Item3
egenskapen i 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()
Jämförelse och sortering av tuples
Tuples kan jämföras utifrån deras element.
Som ett exempel kan en mängd vars element är av typen Tuple
sorteras baserat på jämförelser operatörer definierade på ett specifikt element:
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)
Eller för att vända sorteringsanvändningen:
list.Sort((a, b) => b.Item2.CompareTo(a.Item2));
Returnera flera värden från en metod
Tuples kan användas för att returnera flera värden från en metod utan att använda parametrar. I följande exempel används AddMultiply
för att returnera två värden (summa, 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);
}
Produktion:
53
700
Nu erbjuder C # 7.0 ett alternativt sätt att returnera flera värden från metoder med hjälp av värdetopplar Mer information om ValueTuple
strukturen .