是这段代码:
public string GetSomething(string someValue)
{
var x = Convert.ToString(someValue);
return x.SomeStringMethod(); // e.g. x.ToLower();
}
与此相比,我应该关注任何问题:
public string GetSomething(string someValue)
{
var x = someValue ?? string.Empty;
return x.SomeStringMethod(); // e.g. x.ToLower();
}
答案 0 :(得分:4)
Convert.ToString(x)
其中x
的类型为字符串且为null,返回null
,因此它不会执行与
someValue ?? string.Empty;
您必须使用第二种方法来避免行
中的空引用异常 x.SomeStringMethod();
更具可读性:
if (someValue != null)
return someValue.SomeStringMethod();
else
return "";
答案 1 :(得分:0)
如果字符串为空并且您想要返回一个空字符串,那么我会提取它:
var x = String.IsNullOrEmpty(someValue) ? string.Empty:someValue;
return x.SomeStringMethod();
避免nullReferenceException
并返回空字符串,如果为空或null,如果不返回实际字符串。
如果您有任何机会想告诉用户该字符串的结果为null 你可以这样做:
var x = String.ReferenceEquals(someValue, null) ? "null" : someValue;
return x.SomeStringMethod();