2013-02-11 131 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个组件条件成立。

相关问题