为什么一个字符串被指定为string.Empty被视为null(C#)
本文关键字:string Empty null 一个 字符串 为什么 | 更新日期: 2023-09-27 18:22:23
我最初有一些条件代码,如下所示:
String _monthYr4;
. . .
if (_monthYr4.Length > 0)
但是,当_monthYr4在达到条件之前没有被赋值时,它在运行时爆炸了,旧的栗子是"Object reference not set to a instance of a Object"
因此,我在_monthYr4中添加了一个我认为是默认字符串值(尽管为空),如下所示:
private String _monthYr4 = String.Empty;
但它仍然以完全相同的方式坠毁。所以我最终将条件改为:
if (null != _monthYr4)
而且效果很好。但为什么呢?在为_monthYr4分配String.Empty之后,它不应该是非null吗?
顺便说一句,在我将String.Empty分配给_monthYr4之前,它看起来是这样的:
String _monthYr4;
但在我将String.Empty分配给_monthYr4之后,Visual Studio(或者Resharper,也许是?)自动地准备了一个"私有"部分,使其为:
private String _monthYr4 = String.Empty;
但我不知道为什么。
以后可能有什么东西将null赋值给该变量。使用ReSharper查找_monthYr4的所有引用(Shift-F12),并确保所有写访问都不能将null赋值。