我意外地跳进了这个,并且不知道为什么会发生这种情况
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
我对最后一部分感到满意,但我不知道为什么评价为真。即使Indexof
和LastIndexOf
也有不同的值。
有谁可以帮我解释为什么会这样?
修改
我认为这与我的问题有点相关,也会对那些偶然发现这个问题的人有所帮助。
答案 0 :(得分:16)
来自msdn的IndexOf
如果value为String.Empty,则返回值为0.
如果value为String.Empty,则返回值是此实例中的最后一个索引位置。
如果value参数出现在此字符串中,或者value为空字符串(“”);
,则为
答案 1 :(得分:4)
问题:字符串"Hello World"
是否包含String.Empty?
回答:是的。
每个可能的字符串都包含String.Empty,因此您的测试正确返回true。
如果您正在尝试测试您的字符串是否为空,那么以下代码就是您想要的
if (string.IsNullOrEmpty(sample))
{
}
答案 2 :(得分:1)
返回值
类型:System.Boolean
true
如果value参数出现在此字符串中,或者value是空字符串(“”);否则,false
。
如果value为String.Empty,则返回值为0.
如果value为String.Empty,则返回值是此实例中的最后一个索引位置。