【问题标题】:What is meant by ^1 as array index (e.g. arr[^1]) in C#? [duplicate]^1 在 C# 中作为数组索引(例如 arr[^1])是什么意思? [复制]
【发布时间】:2021-05-30 17:17:35
【问题描述】:
int []arr = new int[4];
arr[^1];   // returns the last element

我正在尝试找出上面的语法。它返回最后一个元素,但为什么呢?

【问题讨论】:

  • 参见this answer,一式两份。当然,还有the documentation,在要求全球社区教你一门有据可查的编程语言的语法之前,你应该经常看看这里。
  • @atiyar:我通过 Google 搜索 google.com/… 找到了这些链接。所以,不……找到它们一点也不难。无论如何,他们确实回答了问题,并且 OP 没有没有提供任何证据证明在发布他们的问题之前已经进行了任何尽职调查。跨度>
  • @atiyar:“我在结果中看不到任何文档”——搜索仅限于 Stack Overflow。 Stack Overflow 不是一个文档站点。所以,呃...当然 documentation 不会出现在该搜索中。顺便说一句,这就是重点。坦率地说,关于 Stack Overflow 的任何问题都不应该以“X 在语言 Y 中的含义”的形式出现。这就是语言文档的用途。显示确实回答了他们所问问题的问题帖子的作者是慷慨的。这些问题应该带着偏见删除。

标签: c# syntax array-indexing


【解决方案1】:

C# 8.0 及以后的版本,声明了 new ranges and indexes

其中^运营商:

让我们从索引的规则开始。考虑一个数组序列。 0 索引与sequence[0] 相同。 ^0 索引与sequence[sequence.Length] 相同。

因此,它是一种反向搜索可索引对象的方法,无需像 sequence[sequence.Length - i] 那样进行迭代。

string[] words = new string[]
{
                // index from start    index from end
    "The",      // 0                   ^9
    "quick",    // 1                   ^8
    "brown",    // 2                   ^7
    "fox",      // 3                   ^6
    "jumped",   // 4                   ^5
    "over",     // 5                   ^4
    "the",      // 6                   ^3
    "lazy",     // 7                   ^2
    "dog"       // 8                   ^1
};              // 9 (or words.Length) ^0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2013-01-03
    • 2019-10-29
    • 1970-01-01
    • 2018-06-16
    相关资源
    最近更新 更多