gpt4 book ai didi

c# - 为什么 ReSharper 认为 MailMessage.From 不能为空?

转载 作者:行者123 更新时间:2023-11-30 14:34:26 26 4
gpt4 key购买 nike

[注意:这类似于Compare string to null - Why does Resharper think this is always false? ,但从源代码来看,MailMessage.From 上似乎没有[NotNull] 属性。]

考虑这个方法:

public void Send(MailMessage mailMessage)
{
if (mailMessage.From == null)
mailMessage.From = new MailAddress(Settings.SmtpSettings.From);
_smtpClient.Send(mailMessage);
}

ReSharper 7.1.1 警告我 mailMessage.From 不能为空。我对此完全感到困惑。

mailMessage.From 是一个 MailAddress,它是一个类(不是结构),所以我认为它肯定可以为 null(尽管我承认它当然不应该' t 是在发送消息时)。

这是一张显示我得到的 ReSharper 工具提示的图片:

ReSharper indicating that mailMessage.From == null is always false

ReSharper 7.1 认为 mailMessage.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);
}

因此,看起来 ReSharper 完全错误,MailMessage.From 不能为 null。

最佳答案

这是 ReSharper 注释中的一个错误。在 .netFramework 4.0 中,此属性在其 setter 中检查空值,但在 MailMessage 类的默认构造函数中不保证非空值。我为此记录了一个问题:http://youtrack.jetbrains.com/issue/RSRP-337152

关于c# - 为什么 ReSharper 认为 MailMessage.From 不能为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14095820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com