为了账号安全,请及时绑定邮箱和手机立即绑定

从值元组创建子元组

从值元组创建子元组

C#
精慕HU 2021-03-30 09:14:25
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();

请注意,如果元组成员具有名称,则将其删除。


查看完整回答
反对 回复 2021-04-10
  • 1 回答
  • 0 关注
  • 224 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信