では、要素が見つからない場合、インデックス検索関数は配列で何を返しますか?
配列を返すメソッドがあるとします:
Array GetArray() { return … }
そして、その中の数字を探すコード:
Array array = GetArray(); int index = Array.IndexOf(array, 42); if (index != -1) { // do something }
すべてがおなじみでおなじみですが、ドキュメントを見ると、要素が見つからない場合にIndexOf(Array ...)メソッドが
-1
ではなく
- 1
-1
返すことに驚いています。
これから2つの結論が得られます。
1. 0以外で始まる配列を作成できます。
2.上記のコードは正しくありません。
0以外の配列を作成する例:
Array array = Array.CreateInstance(typeof(int), new int[] { 3 }, new int[] { -1 });
この例では 、インデックス付けが
-1
から始まる3つの要素の配列を作成します。
正しいコードは次のとおりです。
Array array = GetArray(); int index = Array.IndexOf(array, 42); if (index != (array.GetLowerBound(0) - 1)) { // do something }
この機能は、インデックス作成が1から始まる.NETプラットフォーム言語用に作成されたと思います。
さらに、ドキュメントでは、下限が
int.MinValue
である別のケースについて説明しています。 この場合、
IndexOf
メソッドは、
int.MinValue - 1
(オーバーフロー)に対応する
int.MinValue - 1
を返します。
ご清聴ありがとうございました!