[注: これはCompare string to null - なぜ Resharper はこれが常に false であると考えるのですか? 、しかしソースからは、 には[NotNull]
属性がないようですMailMessage.From
。]
次の方法を検討してください。
public void Send(MailMessage mailMessage)
{
if (mailMessage.From == null)
mailMessage.From = new MailAddress(Settings.SmtpSettings.From);
_smtpClient.Send(mailMessage);
}
mailMessage.From
ReSharper 7.1.1 は、null にすることはできないと警告しています。私はこれに完全に困惑しています。
mailMessage.From
クラス(構造体ではMailAddress
ない)であるため、間違いなくnullになる可能性があると思います(ただし、メッセージが送信された時点では決してそうであってはなりません)。
これは、私が取得している ReSharper ツールチップを示す画像です。
ReSharper 7.1mailMessage.From
が null にできないと考える理由、またはこれはバグですか?
アップデート
ということで、話が肥大化…
いくつかのテストを書いたところ、予期しない結果が得られました。
このテストは失敗します:
[Test]
public void FromPropertyOfMailMessageCannotBeNull()
{
var message = new MailMessage();
Assert.IsNotNull(message.From);
}
そして、これは合格します:
[Test]
public void FromPropertyOfMailMessageIsNullIfDefaultConstructorIsUsed()
{
var message = new MailMessage();
Assert.IsNull(message.From);
}
MailMessage.From
したがって、ReSharper はnull にできないという単純な間違いのようです。