我有一個短路情況的問題,我需要做的是檢查一個數組是否有近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
,如果失敗了,我需要檢查,如果itemToRemove
陣列有近2索引,如果是我需要的fav
值反覆比較,兩個指標分別爲itemToRemove
。
現在假設在itemToRemove
只有一個指標,我無法從該退出:
(itemToRemove.Length > 1 & fav == itemToRemove[0] || fav == itemToRemove[1])
特別
與&
我試圖從狀態退出,如果索引AREN」兩個。
在調試模式下,我可以看到false
值有斷點,但我不明白爲什麼代碼秋季:
OutOfRangeException
與itemToRemove[1]
時,應離開條件。
我在做什麼錯?
一般的經驗法則是,在處理「bool」邏輯時,幾乎不會使用非短路運算符'&'和'|'。 – juharr