c#中的??運算符


注意啦,c#中的??運算符是和?:運算符是不同的,這兩者是有區別的。

 

??運算符稱為null合並運算符,用於定義null值的類型和引用類型的默認值。

 

只當運算符的左操作數不為 null,此運算符將返回左操作數;否則返回右操作數。什么意思?我們來看個例子:

 

string x = null;
string z = "不為空";
string y = x ?? z;

 

這里我定義了string類型的x為null,z不為空。因為x=null,所以返回右操作數,也就是z,所以y等於z。

 

在編寫單例模式的代碼的時候,我們常常需要判斷instance是否為空,間接來new單例對象。

 

那么這個運算符剛好派上用場。比如我寫個DownloadMrg單例類

 

public class DownloadMrg
{
    public static DownloadMrg instance;
    public static DownloadMrg Instance 
    {
        get 
        {
            return instance ?? new DownloadMrg();//如果instance為null,就返回實例化單例對象
        }
    }    
}        

是不是看起來很簡潔,不用再用if判斷什么的,節省了很多時間。

 

我們再來看看?:運算符的實現。

條件運算符 (?:) 根據Boolean 表達式的值返回兩個值之一。 下面的是條件表達式的語法:

condition ? first_expression : second_expression;

只當condition為true,first_expression 才為結果,否則,second_expression為結果。

 

這個運算符也可以用來處理單例模式代碼:

public class DownloadMrg
{
    public static DownloadMrg instance;
    public static DownloadMrg Instance
    {
        get
        {
            return (null == instance) ? new DownloadMrg() : instance;
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM