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 :
这是一个运算符优先级问题,您的代码首先执行+
,将"Some Sample Name : "
文本与s1
组合,然后将??
应用于此。
由于s1
和s2
是Sample
,而不是String
,因此不能使用s1 ?? "Null"
。可能最简单的事情是使用条件运算符:
Console.WriteLine("Some Sample Name : " + (s1 == null ? "Null" : s1.ToString()));