[注: これは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.FromReSharper 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 にできないという単純な間違いのようです。