【问题标题】:What does `array[^1]` mean in C# compiler? [duplicate]`array[^1]` 在 C# 编译器中是什么意思? [复制]
【发布时间】: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


【解决方案1】:

numbers[^1]numbers[length-1] 相同

它们在 C# 8 中被称为范围运算符。查看link 了解更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 2019-09-12
    • 2013-01-03
    相关资源
    最近更新 更多