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会向您发出警告,因此您需要进行空检查. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |