C#中兩個問號的作用是判斷??左邊的對象是否為null,如果不為null則使用??左邊的對象,如果為null則使用??右邊的對象。
比如:a = b ?? c,如果b為null,則a = c,如果b不為null,則a = b。
下面一段代碼示範了這兩種情況:
01 |
static void Main( string [] args) |
08 |
private static void NewFuck() |
11 |
Console.WriteLine(fuck ?? "fuck not found." ); |
14 |
private static void Shit() |
17 |
string b = ( string )shit ?? "shit not found." ; |
執行結果如真相:
很明顯,這種類似三目運算式的運算子可以用來在妹子面前裝B,看個直觀的例子:
02 |
private static void NewFuck() |
05 |
Console.WriteLine(fuck ?? "fuck not found." ); |
09 |
private static void Fuck() |
12 |
string s = fuck != null ? fuck : "fuck not found." ; |
17 |
private static void SBFuck() |
28 |
s = "fuck not found." ; |
這三個方法在結果上是相同的,都會在螢幕上輸出Fuck。當然,寫個例子只是Demo層級的,我們在實際編程的時候用??運算子往往更有用,可以省去很多麻煩。比如處理頁面QueryString的時候:
02 |
string tmd = String.Empty; |
03 |
if (Request[ "Select" ] != null ) |
05 |
tmd = Request[ "Select" ]; |
13 |
string tmd1 = Request[ "Select" ] ?? "All" ; |
怎麼樣?有沒有覺得屌爆了。Session什麼的也可以這麼處理。順便提一句,實際項目中處理參數比這個要複雜。往往包括類型轉換等操作。類型轉換建議用as操作符,強轉不好。