在C#中,两个双引号对于字符串变量意味着什么?

时间:2013-11-10 02:41:38

标签: c# string null

我最近遇到了一个问题,让我想知道两个双引号对C#中的编译器意味着什么。

string Var, blankVar;

Var = null; //Var is not instantiated or defined.
Var = ""; //Var should be blank or empty, but it is not null.
Var = "house"; //Var is defined as the string value house.
blankVar = ""; //blankVar should be blank or empty, but it is not null.

此时编译器应将“house”的值存储到字符串变量Var中。字符串变量blankVar应为空。

if (Var.Contains(blankVar)) //if "house" contains "" then..
{
// do something
}

如果Var等于“house”并且不包含空(“”),为什么编译器仍然会进入if语句?

1 个答案:

答案 0 :(得分:4)

每个字符串都包含空字符串。从逻辑上讲,这是有道理的,因为每个字符串都包含一些零长度的子字符串,包括空字符串本身。

Contains方法只是反映了这一点。请参阅documentation

  

返回值
  输入:System.Boolean
   true 如果 value 参数出现在此字符串中,或​​者 value 是空字符串(“”);否则, false