【发布时间】:2021-02-08 13:52:57
【问题描述】:
int[] numbers = new int[10];
numbers[9] = 10;
Console.Write(numbers[^1] == numbers[numbers.Count()-1]); //true
^1 的索引如何返回数组中的最后一项?
^1 在 C# 编译器中是什么意思?
与numbers[numbers.Count()-1]相比,它有性能优势吗?
【问题讨论】:
-
也许您应该阅读文档? docs.microsoft.com/en-us/dotnet/csharp/language-reference/…。此外,它显然比使用
numbers.Count()-1更好,因为Count()是一个需要遍历整个数组的Linq 方法。 -
@CamiloTerevinto:
Enumerable.Count()比这更聪明——如果应用于任何实现ICollection(包括数组)的东西,它只会得到.Count。仍然存在开销,但远低于必须迭代整个数组的情况。 -
@JeroenMostert 我非常清楚这一点,但这是一个未来可能会改变的实现细节:)
-
好的,这是 C# 8 的特性,但 C# 7 中的等效代码是什么?
^1翻译成什么? -
Camilo Terevinto 的链接中对此进行了很好的描述...
标签: c# indexing unary-operator