初始化的字符串似乎包含string.Empty

时间:2011-05-04 11:45:41

标签: c# contains string-comparison string

我意外地跳进了这个,并且不知道为什么会发生这种情况

string sample = "Hello World";
if (sample.Contains(string.Empty))
{
    Console.WriteLine("This contains an empty part ? at position " + sample.IndexOf(string.Empty));
    Console.WriteLine(sample.LastIndexOf(string.Empty));
    Console.WriteLine(sample.Length);
}

输出

This contains an empty part ? at position 0

10

11

我对最后一部分感到满意​​,但我不知道为什么评价为真。即使IndexofLastIndexOf也有不同的值。

有谁可以帮我解释为什么会这样?

修改

我认为这与我的问题有点相关,也会对那些偶然发现这个问题的人有所帮助。

请参阅此SO链接:Why does "abcd".StartsWith("") return true?

3 个答案:

答案 0 :(得分:16)

来自msdn的IndexOf

  

如果value为String.Empty,则返回值为0.

LastIndexOf

  

如果value为String.Empty,则返回值是此实例中的最后一个索引位置。

Contains

  

如果value参数出现在此字符串中,或​​者value为空字符串(“”);

,则为

答案 1 :(得分:4)

问题:字符串"Hello World"是否包含String.Empty?

回答:是的。

每个可能的字符串都包含String.Empty,因此您的测试正确返回true。

如果您正在尝试测试您的字符串是否为空,那么以下代码就是您想要的

if (string.IsNullOrEmpty(sample)) 
{

}

答案 2 :(得分:1)

String.Contains Method

中记录了这一点
  

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

并在String.IndexOf Method

  

如果value为String.Empty,则返回值为0.

并在LastIndexOf Method

  

如果value为String.Empty,则返回值是此实例中的最后一个索引位置。