對於以下兩種編碼風格,是否有任何樣式共識?我更好奇,如果這是一種在C#中良好的代碼通常首選的東西,或者這是在爲編碼項目選擇樣式時決定的事情。在C#中使用if(!bool)與if(bool == false)
風格1:使用!登錄表示沒有條件
if (!myBool)
{
//Do Stuff...
}
樣式2:使用== false,表示在條件
if (myBool == false)
{
//Do Stuff...
}
感謝虛假支票!
對於以下兩種編碼風格,是否有任何樣式共識?我更好奇,如果這是一種在C#中良好的代碼通常首選的東西,或者這是在爲編碼項目選擇樣式時決定的事情。在C#中使用if(!bool)與if(bool == false)
風格1:使用!登錄表示沒有條件
if (!myBool)
{
//Do Stuff...
}
樣式2:使用== false,表示在條件
if (myBool == false)
{
//Do Stuff...
}
感謝虛假支票!
通常慣例是
if (!myBool)
一個地方,我不走這條路是可空布爾值。在這種情況下,我會做
if (myBool == true)
{
}
即相當於
if (myBool.HasValue && myBool.Value)
在可空的布爾值上打個電話! – 5StringRyan
爲Nul,能夠
不同意 - 對於編碼的可讀性== true/false比空/ /更清晰。 –
我不知道任何語言,後者是首選。使用前者。
這確實做你所期望的,在大多數語言:
if (x == false)
...
但如雖然它在C#細
if (x != true)
...
:C++,因爲true
僅僅是1的同義詞(所以2
是不是真的還是假的),這不起作用。
事實上,它也可以在.NET變得棘手 - 你可以招一個布爾值取整數值,而搞砸了按位運算(例如a & b
可以是假的,當a
爲1和b
是2,即使兩者都是「真實的」)。
通常,只需使用前者而不用擔心布爾文字。
在使用類型強制轉換的語言中,您可能需要使用=== –
....假設您想要依賴於特定條件 –
@SkyKelsey的類型強制:也可以直接說「使用Javascript」:P。 – Mehrdad
if(!myBool)
{
// Do Stuff here...
}
這是首選的版本,因爲你已經有一個包含真或假布爾變量,沒有理由做一個額外的評估if語句。
更新:
基於什麼阿奎那所說,這種格式是很好用的,除非你有一個可空布爾(例如:bool? myBool
)。如果是這樣的情況下,使用前:
bool? myBool
if (myBool == false)
{
// Do stuff here...
}
我個人比較喜歡'如果(表達式!)' - 是一致的。 – 2011-09-23 23:27:01
我更喜歡:'if(!!!!!!!!!!!!! myBool){/ * do stuff * /}' –
這已經在SO中以各種方式提出了,例如:[明顯不好比較布爾常量例如if(b == false)in Java?](http://stackoverflow.com/questions/2661110/is-it-bad-to-explicitly-compare-against-boolean-constants-eg-if-b-false-在)。 –