Bei der Recherche dekompilierter C# 7-Bibliotheken stößt man möglicherweise auf die Verwendung von ValueTuple-Generika. Es ist von entscheidender Bedeutung, den Zweck von ValueTupeln und ihre Vorteile gegenüber herkömmlichen Tupeln zu verstehen.
Hauptunterschiede:
Begründung für ValueTuples:
Einführung von ValueTuples in C# 7 wurde durch Leistungsaspekte bestimmt:
Beispiele:
Demonstrierung der Verwendung und Vorteile von ValueTuples:
public (int sum, int count) DoStuff(IEnumerable<int> values) { var res = (sum: 0, count: 0); foreach (var value in values) { res.sum += value; res.count++; } return res; }
Verwendung von Zerlegung:
var result = DoStuff(Enumerable.Range(0, 10)); Console.WriteLine($"Sum: {result.sum}, Count: {result.count}");
Oder Verwendung einer neuen Variablen:
ValueTuple<int, int> valueTuple = DoStuff(Enumerable.Range(0, 10)); Console.WriteLine(string.Format("Sum: {0}, Count: {1})", valueTuple.Item1, valueTuple.Item2));
Compiler-Implementierung:
Der Compiler generiert Code, der die Felder von ValueTuple intern nutzt und gleichzeitig den Zugriff auf benannte Argumente für intuitive Zwecke ermöglicht Verwendung.
Fazit:
ValueTuples bieten aufgrund ihrer Werttypnatur, Veränderlichkeit und syntaktischen Zucker erhebliche Leistungs- und Komfortvorteile gegenüber herkömmlichen Tuples.
Das obige ist der detaillierte Inhalt vonValueTuple vs. Tuple in C#: Was sind die wichtigsten Leistungs- und Designunterschiede?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!