我爲了更好地解釋我的情況由一個例子重載構造函數時如何避免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