2013-02-11 127 views
2

如果字符串爲空或空,什麼都要返回string.Split(「;」)如果字符串爲null或空

不應該string.split(「;」)應該拋出一個錯誤?

對我來說,我想這個代碼,並通過它不用任何錯誤,

string a = string.empty; 

if (a.Split(';').Length - 1 < 1) 

誰能告訴我,如果說法是正確的,爲什麼它沒有拋出一個錯誤及其原因。

+1

你可以試試=)很簡單。 – Ph0en1x 2013-02-11 15:55:00

+8

您是否閱讀過文檔? http://msdn.microsoft.com/en-gb/library/b873y76a.aspx – 2013-02-11 15:55:34

+2

-1。您只需閱讀文檔即可查找信息。 – 2013-02-11 15:57:49

回答

29

如果字符串爲空,.Split()將(顯然)拋出NullReferenceException,就像任何其他實例方法一樣。

如果字符串爲空,.Split()將返回單個空字符串的數組(除非您傳遞StringSplitOptions.RemoveEmptyEntries)。
這是一個更一般的(並且不太出人意料的)行爲的一個例子;如果分隔符不出現在源字符串中的任何位置,它將返回一個包含整個源字符串的數組。

+0

以及如果它的空 – Developer 2013-02-11 15:55:20

+0

那麼它會返回字符串。空'# – paul 2013-02-11 15:56:43

+0

@RB:他在打完電話之前問道。 – SLaks 2013-02-11 15:57:04

0

從你的代碼中,a不是null,它是String.Empty。所以當你用分號分隔一個空長字符串時,有一個項目。 1 - 1小於1

0

空字符串與空字符串不同。作爲引用類型的字符串將始終包含「」,如果爲空。空不完全相同,因此,如果你有一個空字符串,它的長度爲0,你的if語句將是有效的。

5

它應該表現as documented

如果這種情況不包含在separator任何字符,則返回數組由包含此實例中的一個元素。

清空空字符串不包含separator中的任何字符,因此返回一個包含引用空字符串的單個元素的數組。

當然,如果你在空引用上調用Split,你會得到一個NullReferenceException。區分對空字符串的引用和空引用是很重要的。

如果您想要方法返回空的數組,請使用StringSplitOptions.RemoveEmptyEntries。如果你想要結果是一個錯誤,你應該自己檢查一下,並拋出你想要的任何異常。

雖然使用API​​時不要猜測行爲很重要:如果您有任何疑問,請查閱文檔。

0

該代碼將字符串拆分爲以​​3210分隔的組件 - 此操作的結果是字符串數組。如果有少於2個組件條件成立。

相關問題