我最近遇到了一个问题,让我想知道两个双引号对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语句?
答案 0 :(得分:4)
每个字符串都包含空字符串。从逻辑上讲,这是有道理的,因为每个字符串都包含一些零长度的子字符串,包括空字符串本身。
Contains
方法只是反映了这一点。请参阅documentation:
返回值
输入:System.Boolean
true 如果 value 参数出现在此字符串中,或者 value 是空字符串(“”);否则, false 。