B. *_*non 3 c# string versioninfo nullreferenceexception winforms
为什么这个代码(在我的表格的_Load()事件中):
FileVersionInfo vi = FileVersionInfo.GetVersionInfo(_fullPath);
String VersionInfo = vi.FileVersion;
if (VersionInfo.Trim().Equals(String.Empty)) {
VersionInfo = NO_VERSION_INFO_AVAILABLE;
}
textBoxVersionInfo.Text = VersionInfo;
Run Code Online (Sandbox Code Playgroud)
...给我以下的错误信息VersionInfo == ""是真的吗?
System.NullReferenceException未处理Message = Object引用未设置为对象的实例.*
你应该String.IsNullOrEmpty在这里使用方法.请参阅MSDN
if (String.IsNullOrEmpty(VersionInfo)) {
VersionInfo = NO_VERSION_INFO_AVAILABLE;}
Run Code Online (Sandbox Code Playgroud)
小智 5
好吧,由于我在另一个问题上获得了荒谬的否定票数,因此这里的情况再次变得更加平淡而轻松:
null代表缺少一个对象 ; 和null;从而null。就是这样,仅此而已。检查堆栈跟踪和/或附加一个调试器,找出其中的null(这是不是一个空字符串)是来自哪里。
例外是使用expr.somePropertyFieldOrMethodwhere 的结果expr为null1的结果,因此使用了Null Reference Exception。
它的工作,你的开发者,以找出哪些 expr是null不是等着看别人的建议可能是错的。因此,在回答标题中的问题后,我将其关闭为“过于本地化”。
(正如我以前的答案,我注意到,textBoxVersionInfo存在null可能导致这个例外,即使VersionInfo == ""是真实的。另一种方法是,当然,这是 VersionInfo不不代表空字符串。)
1从技术上讲,此异常可以任意提出,也许可以通过扩展方法来证明。但是,肆意引发此异常并不常见,也不是一种很好的做法,也不是在.NET框架中发现的,因此通常在调试时是可以忽略的。