【发布时间】:2018-09-19 18:30:29
【问题描述】:
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
【问题讨论】:
-
AFAIK,这里的答案很简单:“不”
-
在 Python 中它就像一个数组,但在这里你有一个像对象的东西
-
检查这是否对您有帮助:stackoverflow.com/questions/18558353/…
-
@silkfire 很难使用反射,因为其意图通常是尊重元素的逻辑 名称,而这些名称不可用 到任何反射 API;它必须是一种语言功能。此外,大型元组中最终“其他所有”值的扩展/回滚真的很难作为反射处理。
-
C# 是静态类型的,因此仅出于这个原因,python 语法是不可能的,因为在您的示例中
subtuple的类型无法在编译时确定(它可以是 ValueTuple或 ValueTuple 等)。
标签: c# python c#-7.0 valuetuple