C#7 ValueTuple是否具有類似于Python切片的功能?C#中值元組的語法類似于Python,但是例如,我找不到從元組中獲取子元組的優雅方法。在Python 3中: tuple = (1,2,3) subtuple = t[:2] #subtuple is (1, 2)在C#7中: var tuple = (1,2,3) //Very similar to Python! var subtuple = (tuple.Item1, tuple.Item2) //Not very elegant, especially for bigger tuples
1 回答

倚天杖
TA貢獻1828條經驗 獲得超3個贊
不,C#中沒有類似的東西。由于C#的靜態類型性質,類似的功能無法與切片點的任意表達式一起使用。
我認為您可以得到的最接近的方法是創建一堆擴展方法,這些方法的名稱中嵌入了切片點。例如:
public static (T1, T2) Take2<T1, T2, T3>(this (T1, T2, T3) tuple) =>
(tuple.Item1, tuple.Item2);
var tuple = (1,2,3);
var subtuple = tuple.Take2();
請注意,如果元組成員具有名稱,則將其刪除。
- 1 回答
- 0 關注
- 244 瀏覽
添加回答
舉報
0/150
提交
取消