1. 程式人生 > 其它 >C#中?與??的區別

C#中?與??的區別

起初我也不知道C#中有??操作符,今天張鵬在檢視我的MVC示例程式的時候問了這個問題,檢查程式碼後發現,下面的程式碼是VS2010在生成MVC應用程式自己新增的:

        public AccountMembershipService(MembershipProvider provider)
        {
            _provider = provider ?? Membership.Provider;
        }

起初我猜想這個??操作符的意思可能跟下面的語句類似:

foreach(...);

迴圈塊中沒有任何內容,所以猜測??跟此類似,表示什麼都不用處理,也就是說??前的表示式為真,什麼都不用處理,反之才需要處理??後的內容。

張鵬Baidu了一下,下面是結果:

單問號---用於給變數設初值的時候,給變數(int型別)賦值為null,而不是0!

雙問號---用於判斷並賦值,先判斷當前變數是否為null,如果是就可以賦一個新值,否則跳過!

使用??操作符,需要前面的表示式為引用物件,值物件是不允許的。

看來,.NET中真有很多不知名的卻是很好的東西等待我們挖掘!