作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
[注意:这类似于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 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/
我是一名优秀的程序员,十分优秀!