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操作符,強轉不好。