SEN*_*Nya 3 c# python c#-7.0 valuetuple
C# 7 ValueTuple 是否有类似于 Python 切片的功能?C# 中值元组的语法与 Python 类似,但我找不到一种优雅的方法来从元组获取子元组。
在Python 3中:
tuple = (1,2,3)
subtuple = t[:2] #subtuple is (1, 2)
Run Code Online (Sandbox Code Playgroud)
在 C#7 中:
var tuple = (1,2,3) //Very similar to Python!
var subtuple = (tuple.Item1, tuple.Item2) //Not very elegant, especially for bigger tuples
Run Code Online (Sandbox Code Playgroud)
不,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();
Run Code Online (Sandbox Code Playgroud)
请注意,如果元组成员有名称,这会将它们删除。
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |