如果字符串爲空或空,什麼都要返回string.Split(「;」)如果字符串爲null或空
不應該string.split(「;」)應該拋出一個錯誤?
對我來說,我想這個代碼,並通過它不用任何錯誤,
string a = string.empty;
if (a.Split(';').Length - 1 < 1)
誰能告訴我,如果說法是正確的,爲什麼它沒有拋出一個錯誤及其原因。
如果字符串爲空或空,什麼都要返回string.Split(「;」)如果字符串爲null或空
不應該string.split(「;」)應該拋出一個錯誤?
對我來說,我想這個代碼,並通過它不用任何錯誤,
string a = string.empty;
if (a.Split(';').Length - 1 < 1)
誰能告訴我,如果說法是正確的,爲什麼它沒有拋出一個錯誤及其原因。
如果字符串爲空,.Split()
將(顯然)拋出NullReferenceException
,就像任何其他實例方法一樣。
如果字符串爲空,.Split()
將返回單個空字符串的數組(除非您傳遞StringSplitOptions.RemoveEmptyEntries
)。
這是一個更一般的(並且不太出人意料的)行爲的一個例子;如果分隔符不出現在源字符串中的任何位置,它將返回一個包含整個源字符串的數組。
從你的代碼中,a不是null,它是String.Empty。所以當你用分號分隔一個空長字符串時,有一個項目。 1 - 1小於1
空字符串與空字符串不同。作爲引用類型的字符串將始終包含「」,如果爲空。空不完全相同,因此,如果你有一個空字符串,它的長度爲0,你的if語句將是有效的。
它應該表現as documented:
如果這種情況不包含在
separator
任何字符,則返回數組由包含此實例中的一個元素。
清空空字符串不包含separator
中的任何字符,因此返回一個包含引用空字符串的單個元素的數組。
當然,如果你在空引用上調用Split
,你會得到一個NullReferenceException
。區分對空字符串的引用和空引用是很重要的。
如果您想要方法返回空的數組,請使用StringSplitOptions.RemoveEmptyEntries
。如果你想要結果是一個錯誤,你應該自己檢查一下,並拋出你想要的任何異常。
雖然使用API時不要猜測行爲很重要:如果您有任何疑問,請查閱文檔。
該代碼將字符串拆分爲以3210分隔的組件 - 此操作的結果是字符串數組。如果有少於2個組件條件成立。
你可以試試=)很簡單。 – Ph0en1x 2013-02-11 15:55:00
您是否閱讀過文檔? http://msdn.microsoft.com/en-gb/library/b873y76a.aspx – 2013-02-11 15:55:34
-1。您只需閱讀文檔即可查找信息。 – 2013-02-11 15:57:49