C#中?與??的區別
阿新 • • 發佈:2022-04-28
起初我也不知道C#中有??操作符,今天張鵬在檢視我的MVC示例程式的時候問了這個問題,檢查程式碼後發現,下面的程式碼是VS2010在生成MVC應用程式自己新增的:
public AccountMembershipService(MembershipProvider provider)
{
_provider = provider ?? Membership.Provider;
}
起初我猜想這個??操作符的意思可能跟下面的語句類似:
foreach(...);
迴圈塊中沒有任何內容,所以猜測??跟此類似,表示什麼都不用處理,也就是說??前的表示式為真,什麼都不用處理,反之才需要處理??後的內容。
張鵬Baidu了一下,下面是結果:
單問號---用於給變數設初值的時候,給變數(int型別)賦值為null,而不是0!
雙問號---用於判斷並賦值,先判斷當前變數是否為null,如果是就可以賦一個新值,否則跳過!
使用??操作符,需要前面的表示式為引用物件,值物件是不允許的。
看來,.NET中真有很多不知名的卻是很好的東西等待我們挖掘!