コレクションの最後の要素
C#では、配列(Array)やListなど、様々なコレクションがあります。
自分で生成したり、メソッドの結果として受け取ったコレクションの中身を
for文で参照したりすることがよくあると思いますが、
最後の要素が必要になるケースもあります。
最後の要素を取得する
要素数を使用する場合
配列の場合はLength、Listの場合はCountでコレクションの要素数を取得できるので
その一つ前の要素が最後の要素になります。
// 配列
array[array.Length-1]
// リスト
list[list.Count-1]
LINQを使用する場合
LINQを使用する場合は、Last()もしくはLastOrDefault()メソッドを使用することで、
最後の要素を得ることが出来ます。
var last = list.Last();
var last = list.LastOrDefault();
配列やListではインデックスを使用して高速にアクセス出来ますが、
コレクションによっては全件を操作するためパフォーマンスには注意が必要です。
インデックス演算子を使用する場合
ここからが本題ですが、C#8.0から導入された、インデックス演算子(^)というものがあります。
これを使用すればコレクションの最後の要素を簡単に取得できます。
// 最後の要素を取得
var last = list[^1];
^1は最後から1番目となるので、
^2なら最後から2番目の要素が取得できます。
var array = new int[] { 10, 20, 30, 40, 50 };
var last = array[^2];
// lastには40が入る
まとめ
今回は簡単にインデックス演算子を紹介してみました。
C#8.0から導入されたので、Unityでも使用できます。
そんなに出番はないかもしれませんが、覚えておいて損は無いと思います。