2009-02-04 59 views

回答

14

x is false,becase(true & false)== false。

& =是& as + = is to +。

+0

於是問題就變成了...爲什麼使用&=可言,而不僅僅是X = FALSE; ? – 2009-02-04 17:22:40

12
x &= false; 

是簡寫:

x = x & false; 

所以在你的代碼:真&假解析爲false。

2
x &= false; 

相同

x = x & false; 

所以,月影說:假的... ...

1

& =是AND賦值運算符(see this MSDN page)

這是同樣的想法+ =你可以爲閱讀:

「的變量執行+操作,然後分配給它回到自己」

2

看看這個MSDN Article

摘錄:二進制&運算符是爲整型和布爾值預定義的。對於整數類型,&計算其操作數的邏輯按位與。對於bool操作數,&計算其操作數的邏輯與;也就是說,當且僅當它的兩個操作數都爲真時,結果才爲真。

因此,換句話說,這是說,x是在你的榜樣假的,因爲(true和false)是假的

1
x &= false 

x = x & false 
只有很短的形式

x是假的在該代碼的末尾。

& =是一個賦值操作符,它們有一堆(+ =, - =,* =,/ =,| =和更多)。它們只是對變量執行操作並將結果分配回該變量的簡短方法。

1

&運算符是一個邏輯「和」,總是評估表達式的兩半。除非兩個操作數都爲真,否則&返回false。 x & = y是x = x & y的縮寫。

在C#中使用的更常見的操作符是& &,該操作符返回相同的值,但一旦找到錯誤的值就停止計算操作數。這與返回值的函數的副作用有關。例如:

if(ConnectToDatabase() && ExecuteQuery()) 

將在所有情況下運行ConnectToDatabase(),但只有在ConnectToDatabase()返回true時才運行ExecuteQuery。在這種情況下,如果數據庫未連接,則不想嘗試運行查詢。

在另一方面:

if(VerifyIdentity() & RegisterRequest()) 

總會執行VerifyIdentity()和RegisterRequest(),然後評估他們的聯合返回值的感實性。

1

此操作可以驗證使用...

valid = True; 
valid &= firstname.isValid(); 
valid &= lastname.isValid(); 
valid &= email.isValid(); 

if(valid) 
    // do something;