C# 8 向 C# 添加了范围语法:
var slice = myArray[0..2];
Run Code Online (Sandbox Code Playgroud)
我发现不太直观的是上限(2在前面的示例中)是排他性的- 不包括在内;即myArray[0..2]返回具有 2 个元素(0 和 1)而不是 3 个元素的切片。
所以我的问题是:为什么C#语言设计者选择让上限独占?
无论是范围文档以及在设计冠军的问题只是状态上界是唯一的-不给任何解释,为什么(至少没有我能找到)。在 GitHub 上也有一个关于这个的讨论,但它似乎也没有包含任何官方解释。
通过搜索 StackOverflow,我偶然发现了 Python的相同问题。Python 也将上限视为排他的。所以我可以想象 C# 语言设计者正在研究其他语言(有范围)并试图使 C# 的行为与其他语言保持一致。但我仍然想知道是否有关于这个决定的任何官方文件。