2

我有以下代码:

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。

4

2 回答 2

5

那是因为您在同一属性的 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");
            }
        }
    }
于 2016-04-23T11:08:02.700 回答
2

您的 setter 错误,您正在通过再次使用属性 getter 来设置属性,这显然是null,您需要使用value如下:

try
  {
      MailAddress m = new MailAddress(value);
      this._email = value;
  }
  catch (FormatException)
  {
      throw new ArgumentException("Wrong email format");
  }
于 2016-04-23T11:07:49.643 回答