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 关注
- 224 浏览
添加回答
举报
0/150
提交
取消