在String.Format()
的参数中,有一个参数是null
,因此调用会抛出NullReferenceException
。为什么即使该参数不在结果字符串中,也会进行检查?
class Foo
{
public Exception Ex { get; set; }
}
class Program
{
public static void Main(string[] args)
{
var f1 = new Foo() { Ex = new Exception("Whatever") };
var f2 = new Foo();
var error1 = String.Format((f1.Ex == null) ? "Eror" : "Error: {0}", f1.Ex.Message); // works
var error2 = String.Format((f2.Ex == null) ? "Eror" : "Error: {0}", f2.Ex.Message); // NullReferenceException
}
}
除了使用两个由if()
分隔的调用之外,还有其他解决方法吗?