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

これは、同じプロパティのセッター内でプロパティ ゲッターを使用しており、コンストラクターで渡された 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

あなたのセッターが間違っています。明らかにプロパティゲッターを使用してプロパティを元に戻しています。次のよう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 に答える