C# DateTimeFormatInfo.CurrentInfo如何可以为空

C# DateTimeFormatInfo.CurrentInfo如何可以为空,c#,resharper,nullreferenceexception,resharper-7.1,datetimeformatinfo,C#,Resharper,Nullreferenceexception,Resharper 7.1,Datetimeformatinfo,我的C#应用程序中有以下代码 DateTimeFormatInfo.CurrentInfo.DayNames ReSharper 7.1.1强调了DateTimeFormatInfo.CurrentInfo可能导致空引用异常的事实 在什么情况下会发生这种情况?或者这只是ReSharper的一个错误,他认为您访问的任何对象的属性都应该被检查为空?ReSharper很可能只是在这里进行词法分析,没有更深入的内容 由于DateTimeFormatInfo是一个类,因此此类型的变量可以是null。这意

我的C#应用程序中有以下代码

DateTimeFormatInfo.CurrentInfo.DayNames
ReSharper 7.1.1强调了
DateTimeFormatInfo.CurrentInfo
可能导致空引用异常的事实


在什么情况下会发生这种情况?或者这只是ReSharper的一个错误,他认为您访问的任何对象的属性都应该被检查为空?

ReSharper很可能只是在这里进行词法分析,没有更深入的内容

由于
DateTimeFormatInfo
是一个类,因此此类型的变量可以是
null
。这意味着
DateTimeFormatInfo.CurrentInfo
返回的实例可以是
null
引用

这就是你得到的错误

Resharper不明白该方法的编码方式是不会返回
null
引用的,因此它会发出警告


不要把Resharper的信息当作经文…

你说得很好。我想确定我明白为什么会这样。我不知道正确的答案是什么,但我很确定这个答案是不正确的。ReSharper太聪明了,以至于不能将属性返回对象引用的所有情况都标记为可能的空引用错误——如果它这样做,所有程序都会收到数百个这样的错误。作为一个具体的反例,我可以指出DateTimeFormatInfo.InvariantInfo.DayNames的使用不会被标记为可能的空引用错误。应该有人查询JetBrains以获得正确的答案。也许这是7.1版中的一个bug。或者,在一些奇怪的边缘情况下,当前区域性信息可能被设置为程序员创建的区域性,DateTimeFormatInfo.CurrentInfo实际上可以返回null。有趣的是,
DateTimeFormatInfo.current
被标记为可能为null,但
CultureInfo.CurrentCulture.DateTimeFormat
被禁用不是,我是。。。下面是一个示例:0应用程序0x0169994a GetStackFrames()(向量:368)1应用程序0x0167d961 Raise(Il2CppException)(Exception.cpp:30)2应用程序0x0167da3d RaiseNullReferenceException(StringView)(Exception.cpp:61)3应用程序0x0167da31 RaiseNullReferenceException()(Exception.cpp:56)4应用程序0x00af00b1 DateTimeFormatInfo\u get\u CurrentInfo\u m1648708929(Il2CppObject,MethodInfo)(il2cpp codegen.h:342)5应用程序0x00aefed9日期时间格式信息获取实例m3133223810(Il2CppObject,Il2CppObject,MethodInfo)(批量存储库2.cpp:8800)。。。