私は仕事で本当に悪臭のあるコードをいくつか受け継いでいます。私は可能な限り最も痛みのない解決策を見つけることを望んでいます。
任意の数が配列の有効な要素であるかどうかを確認する方法はありますか?
例-array [25]が存在するかどうかを確認する必要があります。
できれば、配列を介してforeach()を実行せずにこれを実行して、行を検索することをお勧めします。
これを行う方法はありますか、それともforeachループで立ち往生していますか?
私は仕事で本当に悪臭のあるコードをいくつか受け継いでいます。私は可能な限り最も痛みのない解決策を見つけることを望んでいます。
任意の数が配列の有効な要素であるかどうかを確認する方法はありますか?
例-array [25]が存在するかどうかを確認する必要があります。
できれば、配列を介してforeach()を実行せずにこれを実行して、行を検索することをお勧めします。
これを行う方法はありますか、それともforeachループで立ち往生していますか?
回答:
長さをテストする
int index = 25;
if(index < array.Length)
{
//it exists
}
LINQを使用してそれを実現することもできます。
var exists = array.ElementAtOrDefault(index) != null;
new object[]{ null }.ElementAtOrDefault(index)
戻ります。を使用することは、配列インデックスが存在することを確認するための優れたソリューションではありません。最後に等しいチェックを追加すると、結果が不確定になります。null
null
ElementAtOrDefault
array.Length > index
。
「有効な要素である」とはどういう意味ですか?あなたはただすることができます:
if (array.Length >= 26)
これにより、25が配列への有効なインデックスであるかどうかがわかります(下限が0であると想定)。
nullでないかどうかを知る必要がある場合は、次を使用してください。
if (array[25] != null)
(または2つの組み合わせ)。
これらが役に立たない場合は、問題に対して「有効」のより正確な意味を教えてください。
Index was outside the bounds of the array
むしろリストを使用できるので、存在を確認できます。
List<int> l = new List<int>();
l.Add(45);
...
...
if (l.Count == 25) {
doStuff();
}
int num = 45;
if (l.Contains(num)) {
doMoreStuff();
}