我为了更好地解释我的情况由一个例子重载构造函数时如何避免NullReferenceException?
void Main()
{
var a = new Lol(null);
}
public class Lol
{
public Lol(string a, string b)
{
if(a == null || b == null)
{
throw new Exception();
}
}
public Lol(Tuple<string, string> k)
: this(k.Item1, k.Item2)
{
}
}
在这种情况下,我在第二个构造得到一个NullReferenceException
。有没有办法从方法内部处理它,保持相同的结构,或者我应该创建一个私有方法,并有两个构造函数称为此方法?
如果你有C#6(VS 2015),你可以执行'this(k?.Item1,k?.Item2)'。 – juharr
或者不要调用'this ...'并在第二个构造函数内部执行,这可能更合适,因为您在那里执行不同的空值检查。 – DavidG
不要这样称呼。在实际的第二个构造函数中处理任何赋值。然后,你可以在构造函数里面进行空检查。 – Jay