C# 中 Tuple & ValueTuple 兩者使用方式相似,都是將多個值組合在一起的結構,避免因為需要多個變數而建立額外的類別。
差異
| ValueTuple | Tuple | |
|---|---|---|
| 類型 | 實值(Value)類型 | 參考(Reference)類型 |
| 效能 | 宣告範圍結束釋放,較輕量 | 需透過 GC 等待釋放 |
| 元素 | 8個以上 | 限制 8個 |
| 元素名稱 | 可自訂名稱 | 只能呼叫 Item<Index> |
實作
使用方式
static void Main(string[] args){// 創建方式var valueTuple = (good: 1, Bad: "2",Sad : 3.3333); // ValueTuplevar tuple = Tuple.Create(1, "2", 3.3333); // Tuple// 呼叫元素方式var valueTupleItem = valueTuple.good; // ValueTuplevar tupleItem = tuple.Item1; // TupleConsole.WriteLine($"ValueTuple:{valueTuple.GetType()}");Console.WriteLine($"Tuple:{tuple.GetType()}");// Output:// ValueTuple:System.ValueTuple`3[System.Int32,System.String,System.Double]// ValueTuple:System.Tuple`3[System.Int32,System.String,System.Double]}
如果你只是需要一個輕量的結構來組合多個值,不需進行複雜的操作,那 ValueTuple 可能更適合