使用Convert.ToString()以字符串转义可能的NullReferenceException是否正确?

时间:2013-07-03 12:43:15

标签: c# string

是这段代码:

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(); 
}

2 个答案:

答案 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();