【C#】インデックスオペレータ

2022-01-27

VSCodeでC#のコードを書いていて、配列の最後の要素を取得したところ「Use index operator」というサジェストが出てきた:

var array = new int[] {1, 2, 3, 4, 5};
var last = array[array.Length - 1];
~~~~~~~~~~~~~~~~ Use index operator

などと書いたらサジェストされて、選ぶとコードが変換される:

var last = array[^1];

^nSystem.Index のシンタックスシュガーで、 [] に渡すと後ろからの参照 [array.Length - n] という意味になるらしい。 配列に限らず、 List でも使える。

全然C#の新しい言語仕様を追いかけてなくてエディタに指摘される日々、 Linqの .Last() を使うので精一杯だったんじゃが…。

コンパイラが適切に処理してくれるようなので、「 Index の一次オブジェクトが〜」とか細かいことは考えなくていいらしい。 (Sharplabで確認

タイプ量は少なくすむが、わかりやすいか・便利かどうかは…うーん微妙。 RubyやPythonの [-1] よりはコンサバでよいとは思うが。

参照