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

本文关键字:运算符 打印 null 如果 变量 | 更新日期: 2023-09-27 18:20:22

我有一个名为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 : 

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

这是一个运算符优先级问题,您的代码首先执行+,将"Some Sample Name : "文本与s1组合,然后将??应用于此。

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

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