JetBrains Rider 2026.1 Help

コードインスペクション:最後からのインデックスはゼロより大きくしてください。最後の要素を参照するには '^1' を使います。

C# 8.0 で導入された逆インデックス演算子 ^ は、最初の要素 0 を参照する場合と同じように、最後の要素を ^0 で参照するという間違いを引き起こす可能性があります。 ただし、末尾からのインデックスは 1 で始まるように設計されているため、インデックスとして ^0 を使用すると、実行時に IndexOutOfRangeException が発生します。

この StackOverflow の回答(英語)は、エンドスターからのインデックスが 0 ではなく 1 である理由の良い説明を提供します。

この問題を修正するには、インデックス内の ^0^1 に置き換えます。

void Sample() { var numbers = new[] { "one", "two", "three" }; var three = numbers[^0]; Console.WriteLine(three); }
void Sample() { var numbers = new[] { "one", "two", "three" }; var three = numbers[^1]; Console.WriteLine(three); }
2026 年 6 月 12 日