C# ??如果变量为null,则运算符不打印值

时间:2014-09-03 06:01:56

标签: c#

我有一个名为Sample的类,其名称为Name,ToString()的字符串属性被重写以返回Name属性。

然后我创建了两个实例s1和s2,s1初始化并且它的Name属性设置为" ABC"并且s2设置为null。

当我尝试使用??打印值时? c#的运算符,值字符串" Null"不打印s2。

class Program
{
    static void Main(string[] args)
    {
        Sample s1 = new Sample();
        s1.Name = "ABC";

        Sample s2 = null;

        Console.WriteLine("Some Sample Name : " + s1 ?? "Null");
        Console.WriteLine("Some Sample Name : " + s2 ?? "Null");
        Console.ReadLine();
    }
}

class Sample 
{
    string _Name;
    public string Name
    {
        get { return _Name; }
        set { _Name = value; }
    }

    public override string ToString()
    {
        return Name;
    }
}

输出:

Some Sample Name : ABC
Some Sample Name : 

1 个答案:

答案 0 :(得分:5)

这是一个operator precedence问题,您的代码首先执行+,将"Some Sample Name : "文字与s1合并,然后应用??这一点。

由于s1s2Sample,而不是String,因此您无法使用s1 ?? "Null"。可能最简单的事情是使用条件运算符:

Console.WriteLine("Some Sample Name : " + (s1 == null ? "Null" : s1.ToString()));