2015-04-23 49 views
2

我在處理C#中的基本if else語句時遇到問題。使用按位運算符驗證if條件

我有兩個類型爲uint的變量。我需要檢查第一個變量是否在第二個變量的範圍內。另外,第一個變量的值可以爲null。如果我爲第一個值輸入一些值,輸出會很好。但是,如果我在第一個變量中輸入null,所需的輸出將會失敗。我以這種方式完成了這項工作。

using System; 

public class Test 
{ 
    public static void Main() 
    { 
     uint var1 = 0x00000000; 
     uint var2 = 0x0ffffffa; 
     if (!((var1 == null) || (((var1 != null) && (var1 & var2)) > 0))) 
     Console.WriteLine ("no"); 
     else 
     Console.WriteLine ("yes"); 
    } 
} 

當輸出來臨,因爲沒有代碼如下:

using System; 

public class Test 
{ 
    public static void Main() 
    { 
     uint var1 = 0x00000000; 
     uint var2 = 0x0ffffffa; 
     if (!(((var1 != null) && ((var1 & var2) > 0)) || (var1 == null))) 
     Console.WriteLine ("no"); 
     else 
     Console.WriteLine ("yes"); 
    } 
} 

但產量來了「無」。我哪裏錯了?

我想要一個'是'作爲輸出。我需要檢查第一個變量。如果它爲空然後罰款,如果不是,那麼它是否在第二個變量的範圍內,如果是,那麼也很好

+5

'uint'是一個值類型,因此它不能爲'null'。你的if語句中有兩個冗餘條件。 –

+0

那麼如何將空值的條件合併? –

+1

也許你想'var1 == 0'而不是'var1 == null'?或者你必須將'var1'類型改爲'uint? var1 = 0x00000000;' –

回答

0

我很困惑,問題在這裏。您已初始化變量,因此它們不能爲空,您已使用OR邏輯操作數,因此語句在評估第一項並發現它爲真時會短路。

+3

這感覺對我來說應該是一個評論。你沒有回答這個問題。 – Default

+0

如果問題是爲什麼「否」被退回,那麼它是。 – Slothrop

+0

我想要一個'是'作爲輸出。我需要檢查第一個變量。如果它爲空則很好,如果不是,那麼它是否在第二個變量的範圍內,如果是,那麼也很好。 –