我有一个非常简单的C#问题:处理空字符串时,以下语句是否相等?
s ?? "default";
或
(!string.IsNullOrEmpty(s)) ? s : "default";
我认为:从string.Empty!=null
开始,当我真正想要的是第二个时,合并运算符可以将第一个语句的结果设置为空值。因为字符串是特殊的(==和!=重载到值比较)我只是想请C#专家确认。
谢谢。
答案 0 :(得分:15)
是的,你是对的 - 它们与你指定的方式不一样。
如果您对第一张表格不满意,可以写下以下内容的扩展名:
public static string DefaultIfNullOrEmpty(this string x, string defaultValue)
{
return string.IsNullOrEmpty(x) ? defaultValue : x;
}
然后你可以写:
s.DefaultIfNullOrEmpty("default")
在您的主要代码中。