加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么Resharper会在这种情况下显示System.NullReferenceE

发布时间:2020-12-16 00:24:04 所属栏目:百科 来源:网络整理
导读:为什么Resharper在这种情况下会显示System.NullReferenceException警告? MethodBase.GetCurrentMethod().DeclaringType.Name 我在我的代码中的许多地方都有上述行.为什么Resharper会给我一个警告? 我在类似的行上检查了SO,但没有完全匹配. 解决方法 您所看
为什么Resharper在这种情况下会显示System.NullReferenceException警告?

MethodBase.GetCurrentMethod().DeclaringType.Name

我在我的代码中的许多地方都有上述行.为什么Resharper会给我一个警告?

我在类似的行上检查了SO,但没有完全匹配.

解决方法

您所看到的是 ReSharper’s Annotation [CanBeNull]的结果,它应用于属性MemberInfo.DeclaringType:

(这是ReSharper的QuickDoc功能,按Ctrl Q或Ctrl Shift F1,具体取决于您使用的键绑定).

我最近在recorded a webinar使用JetBrains,深入讨论了注释,所以欢迎观看它以获取有关其工作原理的更多信息,但基本上,ReSharper“知道”DeclaringType属性在运行时可能为null.这是因为任何一个MemberInfo实现都可能从此属性返回null.例如,ConstructorInfo does this:

public override Type DeclaringType 
{ 
    get 
    { 
        return m_reflectedTypeCache.IsGlobal ? null : m_declaringType; 
    }
}

在任何情况下,由于可能,DeclaringType的一个实现可以为null,ReSharper会向您发出警告,因此您需要进行空检查.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读