System.ValueTuple と System.Tuple
の違いは何ですか?
システム。 ValueTuple と System.Tuple は、タプルを表すために使用できる 2 つの型ですC#で。ただし、それらの間にはいくつかの重要な違いがあります。
主な違い
Feature | ValueTuple | Tuple |
---|---|---|
Value type | Yes | No |
Mutability | Mutable | Immutable |
Item access | Fields | Properties |
Syntax sugar | Supports deconstruction and named arguments | Does not |
Performance | Allocation-free on the stack | Requires heap allocation |
ValueTuple
ValueTuple は値です。タイプ (構造体)。スタック上に割り当てられ、ガベージ コレクションを必要としないことを意味します。これは可変構造体であるため、作成後に値を変更できます。 ValueTuple は、プロパティではなくフィールドを介して項目を公開します。
Tuple
Tuple は参照型 (クラス) です。つまり、ヒープ上に割り当てられ、ガベージ コレクションが必要です。 。これは不変クラスであるため、作成後に値を変更することはできません。タプルは、プロパティを介して項目を公開します。
ValueTuple を使用する理由
ValueTuple を使用すると、タプルを使用する場合に比べていくつかの利点があります。
例
ValueTuple の使用構文:
public (int sum, int count) DoStuff(IEnumerable<int> values) { var result = (sum: 0, count: 0); foreach (var value in values) { result.sum += value; result.count++; } return result; }
分解の使用:
var (sum, count) = DoStuff(Enumerable.Range(0, 10)); Console.WriteLine($"Sum: {sum}, Count: {count}");
以上がC# の ValueTuple とタプル: 主な違いは何ですか? それぞれをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。