2017-02-17 55 views
-6

我不知道爲什麼會這樣,但這裏的問題screenshot.如果聲明繼續當假的(多個||和&&)

I = 0和allCorrect [0] =真。聲明中說「如果allCorrect [0]!= true」或者「如果true!= true」,那爲什麼它仍然運行花括號內的代碼,我只是錯過了一些非常簡單的東西?

額外信息:

這張截圖是從被編譯成一個DLL,並在另一個項目中使用的文件拍攝。但是,這不應該影響任何東西。

我試着將它放在括號內並使用!這樣也

if ((parameters[i] == "0" && !allCorrect[i]) || 
       (parameters[i] == "1" && !allCorrect[i]) || 
       (parameters[i].ToLower() == "false" && !allCorrect[i]) || 
       (parameters[i].ToLower() == "true" && !allCorrect[i])) 
+0

代碼需要在(allCorrect [I]!)這個問題,而不是圖片 – BradleyDotNET

+0

你的意思是爲什麼它仍然在你的if語句內進行?我對嗎? –

+0

@WillyDavidJr是 –

回答

0

解決方法:

我把所有的條件語句裏面如果是這樣它看起來像這樣

if (!allCorrect[i]) 
      { 
       if (int.TryParse(parameters[i], out INT)) 
       { 
        if (_command.ParameterTypes[i] == EVariableType.INT) 
        { 
         allCorrect[i] = true; 
        } 
        else 
        { 
         allCorrect[i] = false; 
        } 
       } 
      } 
      if (!allCorrect[i]) 
      { 
       if (float.TryParse(parameters[i], out FLOAT)) 
       { 
        if (_command.ParameterTypes[i] == EVariableType.FLOAT) 
        { 
         allCorrect[i] = true; 
        } 
        else 
        { 
         allCorrect[i] = false; 
        } 
       } 
      } 
      if (!allCorrect[i]) 
      { 
       if (parameters[i] == "0" || 
       parameters[i] == "1" || 
       parameters[i].ToLower() == "false" || 
       parameters[i].ToLower() == "true") 
       { 
        if (_command.ParameterTypes[i] == EVariableType.BOOL) 
        { 
         allCorrect[i] = true; 
        } 
        else 
        { 
         allCorrect[i] = false; 
        } 
       } 
      } 
      if (!allCorrect[i]) 
      { 
       if (_command.ParameterTypes[i] == EVariableType.STRING) 
       { 
        allCorrect[i] = true; 
       } 
       else 
       { 
        allCorrect[i] = false; 
       } 
      }