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());
7,0

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 .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow