如果字符串为空或空,什么都要返回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