はじめに
C# 8.0
からa[^1]
やa[1..2]
といった記法が使えるようになりました。
ただ私は未だにこれどこ指しているんだっけとなってしまうので、備忘録的な意味合いも兼ねて一覧としてまとめておきたいと思います。
インデックスの指定
最初の要素を0番目(a[0])
とし、それ以降1,2,...
といった記法でこの記事では統一します。後ろから数えた場合も同様です。紛らわしいですが気をつけてもらえると助かります。
// 0 : 0番目, 1 : 1番目, 2 : 2番目, 3 : 3番目, 4 : 4番目の要素 new[] { 0, 1, 2, 3, 4 };
a[i]
最初からi
番めの要素を指します。
var a = new[] { 0, 1, 2, 3, 4 }; // 0 var x = a[0];
a[^i]
後ろからi-1
番めの要素を指します。
var a = new[] { 0, 1, 2, 3, 4 }; // 4 var x = a[^1];
範囲の指定
a[i..j]
最初からi
番目の要素から、最初からj-1
番目の要素までを指します。
var a = new[] { 0, 1, 2, 3, 4 }; // 1,2 var x = a[1..3];
j
番目を含まないので注意です。
a[i..^j]
最初からi
番目の要素から、最後からj
番目の要素までを指します。
var a = new[] { 0, 1, 2, 3, 4 }; // 1,2,3 var x = a[1..^1];
ちなみにa[^1]
は4
です。
a[i..]
最初からi
番目の要素から最後までを指します。
var a = new[] { 0, 1, 2, 3, 4 }; // 1,2,3,4 var x = a[1..];
a[..j]
最初からj-1
番目の要素までを指します。
var a = new[] { 0, 1, 2, 3, 4 }; // 0 var x = a[..1];
a[..^j]
最初から、最後からj
番目の要素までを指します。
var a = new[] { 0, 1, 2, 3, 4 }; // 0,1,2,3 var x = a[..^1];
ちなみにa[^1]
は4
。
a[^i..]
最後からi-1
番目の要素以降を指します。
var a = new[] { 0, 1, 2, 3, 4 }; // 4 var x = a[^1..];
a[..]
全範囲を指します。
var a = new[] { 0, 1, 2, 3, 4 }; // 0,1,2,3,4 var x = a[..];