不賣關子,直接開門見山:
C#中兩個問号的作用是判斷??左邊的對象是否為null,如果不為null則使用??左邊的對象,如果為null則使用??右邊的對象。
比如:a = b ?? c,如果b為null,則a = c,如果b不為null,則a = b。
下面一段代碼示範了這兩種情況:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
很明顯,這種類似三目表達式的運算符可以用來在妹子面前裝B,看個直覺的例子:
20 21 22 23 24 25 26 27 28 29 30 31 | |
這三個方法在結果上是相同的,都會在螢幕上輸出Fuck。當然,寫個例子隻是Demo級别的,我們在實際程式設計的時候用??運算符往往更有用,可以省去很多麻煩。比如處理頁面QueryString的時候:
|
怎麼樣?有沒有覺得屌爆了。Session什麼的也可以這麼處理。順便提一句,實際項目中處理參數比這個要複雜。往往包括類型轉換等操作。類型轉換建議用as操作符,強轉不好。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int? a;
a = null;//此時輸出3
//a = 6;//此時輸出6
int b = a ?? 3;
Console.Write(b);
Console.ReadKey();
}
}
}
變量定義中含有一個問号,意思是這個資料類型是NullAble類型的。
變量定義中含有兩個問号,雙目運算符,意思是取所指派??左邊的,如果左邊為null,取所指派??右邊的。