2011-05-04 58 views
9

我跳進這個意外並沒有任何線索,爲什麼發生這種情況初始化字符串似乎包含的String.Empty

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?

回答

16

從MSDN什麼IndexOf

如果值的String.Empty,返回值是0。

對於LastIndexOf

如果value是String.Empty,則返回值是此實例中的最後一個索引位置。

Contains對於

真如果發生此字符串中的值參數,或者如果值是空字符串(「」);

+0

@ SwDevMan81:應該不是11而不是10? – V4Vendetta 2011-05-04 11:50:12

+0

@ V4Vendetta - 最後的索引是10(0到10是11個字符) – SwDevMan81 2011-05-04 11:51:17

+0

@ SwDevMan81:對不起,我的錯誤沒有讀取'index',所以它暗示了對於上面給出的任何字符串string.Empty將始終解析爲true (很高興知道是否有例外情況) – V4Vendetta 2011-05-04 11:56:03

4

問題:是否該字符串"Hello World"包含的String.Empty?

答案:是的。

每個可能的字符串都包含String.Empty,因此您的測試正確返回true。

如果你想測試,如果你的字符串爲空,然後將下面的代碼是你想要

if (string.IsNullOrEmpty(sample)) 
{ 

} 
1

這是記錄在String.Contains Method

返回值
類型:System。布爾型
true如果value參數出現在此字符串中,或​​者value是空字符串(「」);否則,false

而且在String.IndexOf Method

如果值的String.Empty,則返回值爲0。

而且在LastIndexOf Method

如果值的String.Empty,返回值是此實例中的最後一個索引位置。