System.ValueTuple 與 System.Tuple
有什麼不同?
System.ValueTuple ValueTuple 和 System.Tuple 是可用於 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 是一個值type(struct),這意味著它是一個值type(struct),這意味著它是一個值type(struct),這意味著它是一個值type在堆疊上分配的,不需要垃圾回收。它是一個可變結構,因此它的值在創建後可以更改。 ValueTuple 透過字段而不是屬性來公開其項目。
Tuple
Tuple 是引用類型(類別),這意味著它在堆上分配,需要垃圾回收。它是一個不可變類,因此它的值在創建後就無法更改。 Tuple 透過屬性公開其項目。
為什麼要用 ValueTuple?
使用 ValueTuple 比使用 Tuple有幾個優點:
示例
使用 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 與 Tuple:主要區別是什麼以及何時應該使用它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!