首頁 > 後端開發 > C++ > C# 中的 ValueTuple 與 Tuple:主要區別是什麼以及何時應該使用它們?

C# 中的 ValueTuple 與 Tuple:主要區別是什麼以及何時應該使用它們?

Susan Sarandon
發布: 2024-12-30 14:58:10
原創
704 人瀏覽過

ValueTuple vs. Tuple in C#: What are the Key Differences and When Should You Use Each?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板