在我的VS 2015编译器上进行测试,我发现:
但这是一种已记录的行为吗?根据定义,
是否安全始终假定上述两个
static void Main(string[] args)
{
string str1 = null;
string str2 = null;
if(str1==str2) //they are the same on my machine
{
}
}
但这是一种已记录的行为吗?根据定义,
NULL
是未定义的行为,因此将 NULL
与另一个 NULL
进行比较可能是未定义的。在我的计算机上,使用我当前的 .Net 框架,两个 NULL
可能会变成相同的。但在未来,它们可能不再相同。在这种情况下,我的代码将默默地出错。是否安全始终假定上述两个
NULL
字符串始终相同?
null
只是表示它不指向任何引用。因此,null
将始终为null
。除非您自己更改它,否则它不会改变。 - slowNULL
没有一个普遍适用的意义。仅因为在某些语言中(例如SQL,因为我看到您以前曾在这里做过一些mysql的工作),NULL
的含义与“未知”或“未定义”的行为密切相关,这并不意味着C#中的null
也是如此。 - Damien_The_Unbelievernull
具有明确定义的含义,并且不表示“未定义行为”。 - Lasse V. KarlsenNothing
也真正意味着未指定/未定义(或默认值)。 - Tim Schmelter