[英]c#: can you use a boolean predicate as the parameter to an if statement?
在C#中,您可以單獨使用布爾謂詞作為if語句的參數嗎?
例如:
string str = "HELLO";
if (str.Equals("HELLO"))
{
Console.WriteLine("HELLO");
}
該代碼將輸出“ HELLO”,還是需要:
string str = "HELLO";
if (str.Equals("HELLO") == true)
{
Console.WriteLine("HELLO");
}
如果上述代碼段還有其他問題,請指出。
編輯:每個答案等於
好吧,后面的代碼片段甚至不會編譯,因為它試圖將 true
str.Equals("Hello")
(您只有一個=而不是==),但是其中一個:
if (str.Equals("HELLO"))
要么
if (str.Equals("HELLO") == true)
將工作。 強烈建議不要使用后者-十分難看。
請記住,字符串重載==,因此您可以實際編寫:
if (str == "HELLO")
這有點簡單。
第二個版本甚至都不會編譯,因為您需要==
,而不是=
。
看到類似if (foo == true)
代碼會使膽汁升到我的嘴里。
是的你可以。
(您的第二個示例需要2 =(即==)是正確的)。
您擁有的代碼是正確的, if
語句檢查括號內的語句是否為true。
請記住,c#中的比較使用== not =,因此應該是if (x == true)
這可以用於其他情況,例如:
bool isACat = true;
if (isACat)
{
}
最好在布爾變量名稱前放置is或類似的標識符(Is / Has / Should / Will / Do / Must ...),因為當您不使用== true時,它易於閱讀。
您可以單獨使用布爾謂詞作為if語句的參數嗎
嚴格來說, 這個問題的答案是“不”,因為謂詞是一個函數 (在數學意義上)。 你可以使用在條件表達式if
是任何布爾表達式 ,包括(這里)上值的謂詞的調用的結果 。
為了擴展,這里的“謂詞”是“等於HELLO”。 它是一個對string
類型的值進行操作並返回布爾值的函數(從數學意義上來說)。 一旦獲得了布爾值(通過將該函數應用於特定字符串str
),就無需將其顯式比較為true
:您可以使用它。
從其他人的答案中可以看出,將布爾類型的表達式與布爾文字進行顯式比較的代碼通常會引起讀者的代碼風格痛苦:)(我最喜歡的方式是<boolean expression> ? true : false
) 。
沒錯
只是用兩種不同的方式來撿起同一湯匙來養活自己;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.