我有以下代码:
private string _email;
public string email
{
get { return _email; }
set
{
try
{
MailAddress m = new MailAddress(email);
this._email = email;
}
catch (FormatException)
{
throw new ArgumentException("Wrong email format");
}
}
}
我一直在调查,这应该是粗略地做的方式,但由于某种原因,总是抛出ArgumentNullException。
答案 0 :(得分:4)
这是因为你在同一属性的setter中使用属性getter,如果构造函数中传递的Address为null,MailAddress
将给NullReferenceException
。相反,您应该使用value
public string email
{
get { return _email; }
set
{
try
{
MailAddress m = new MailAddress(value);
this._email = value;
}
catch (FormatException)
{
throw new ArgumentException("Wrong email format");
}
}
}
答案 1 :(得分:2)
你的setter错了,你是通过再次使用属性getter设置属性,显然是null
,你需要使用value
,如:
try
{
MailAddress m = new MailAddress(value);
this._email = value;
}
catch (FormatException)
{
throw new ArgumentException("Wrong email format");
}