逆コンパイルされた C# 7 ライブラリを調査していると、ValueTuple ジェネリックの使用に遭遇することがあります。 ValueTuples の目的と、従来のタプルと比較した利点を理解することが重要です。
主な違い:
根拠ValueTuples:
C# 7 での ValueTuples の導入は、パフォーマンスを考慮して行われました:
例:
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; }
分解の使用:
var result = DoStuff(Enumerable.Range(0, 10)); Console.WriteLine($"Sum: {result.sum}, Count: {result.count}");
または新鮮なものを使用する変数:
ValueTuple<int, int> valueTuple = DoStuff(Enumerable.Range(0, 10)); Console.WriteLine(string.Format("Sum: {0}, Count: {1})", valueTuple.Item1, valueTuple.Item2));
コンパイラーの実装:
コンパイラーは、ValueTuple のフィールドを内部的に利用するコードを生成し、直感的なユーザー向けの名前付き引数へのアクセスを提供します。
結論:
ValueTuples は、その値型の性質、変更可能性、および糖衣構文により、従来のタプルに比べてパフォーマンスと利便性が大幅に向上します。
以上がC# の ValueTuple とタプル: 主なパフォーマンスと設計の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。