短絡状態に少し問題がありました。配列にほぼ2つのインデックスがあるか、文字列が特定の値と等しいかどうかを確認して問題を再現します。この:短絡状態が失敗する
string[] favItem = new string[] { "hello", "world", "test", "foo" };
string temp = "hello";
var itemToRemove = temp.Split(',');
foreach(var fav in favItem)
{
if(fav == "foo" || (itemToRemove.Length > 1 & fav == itemToRemove[0] || fav == itemToRemove[1]))
{
//do something
}
}
はとても基本的に私は私が反復でfav
値を比較する必要がyesの場合itemToRemove
配列は、ほぼ2インデックスを持っているかどうかを確認する必要があり、これが失敗した場合、デフォルト値でfav
を比較する必要があり、 2つのインデックスはitemToRemove
です。
今すぐitemToRemove
で唯一のインデックスがあると仮定し、私はこれを終了することはできませんよ。&
で特に
(itemToRemove.Length > 1 & fav == itemToRemove[0] || fav == itemToRemove[1])
私は、「インデックスが上がらない場合の条件を終了しようとしています2つ。デバッグモードで
は、私がブレークポイントとfalse
値を見ることができますが、コードの秋に、なぜ私は理解していない:
OutOfRangeException
itemToRemove[1]
とのときのままにする必要があります調子。
私は間違っていますか?
一般的な経験則では、 'bool'ロジックを扱うときに、短絡していない演算子'& 'と' | 'を使うことはほとんどありません。 – juharr