我最初有一些像这样的条件代码:
String _monthYr4;
. . .
if (_monthYr4.Length > 0)
...但是当_monthYr4未在达到条件之前被分配时,它在运行时爆炸,使用旧的栗子,“对象引用未设置为对象的实例。”
所以我添加了我认为是_monthYr4的默认字符串值(尽管是空的),如下所示:
private String _monthYr4 = String.Empty;
......但它仍然以完全相同的方式坠毁。所以我最终将条件改为:
if (null != _monthYr4)
......而且工作正常。但为什么?在为其分配String.Empty后,_monthYr4不应该为非null吗?
另一方面,在我将String.Empty分配给_monthYr4之前,它看起来像这样:
String _monthYr4;
...但是在我将String.Empty分配给_monthYr4后,Visual Studio(或者Resharper,也许?)会自动添加一个“私有”部分,使其成为:
private String _monthYr4 = String.Empty;
......但我不知道为什么。
答案 0 :(得分:1)
稍后可能会为该变量赋值null。使用ReSharper查找_monthYr4的所有引用(Shift-F12),并确保所有写访问都不能指定null。