3

我最近遇到了一个问题,我想知道两个双引号对 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 语句?

4

1 回答 1

4

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

Contains方法简单地反映了这一点。请参阅文档

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

于 2013-11-10T02:43:49.520 回答