从值元组创建子元组

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



精慕HU
浏览 225回答 1
1回答

倚天杖

不,C#中没有类似的东西。由于C#的静态类型性质,类似的功能无法与切片点的任意表达式一起使用。我认为您可以得到的最接近的方法是创建一堆扩展方法,这些方法的名称中嵌入了切片点。例如:public static (T1, T2) Take2<T1, T2, T3>(this (T1, T2, T3) tuple) =>&nbsp; &nbsp; (tuple.Item1, tuple.Item2);var tuple = (1,2,3);var subtuple = tuple.Take2();请注意,如果元组成员具有名称,则将其删除。
打开App,查看更多内容
随时随地看视频慕课网APP