如果字符串为空或为null,那么string.split(";")不应该抛出错误吗?
对我来说,我正在尝试这段代码,并且没有任何错误。
string a = string.empty;
if (a.Split(';').Length - 1 < 1)
有人能告诉我为什么它不会抛出错误,以及为什么if语句为真吗?
如果字符串为空或为null,那么string.split(";")不应该抛出错误吗?
对我来说,我正在尝试这段代码,并且没有任何错误。
string a = string.empty;
if (a.Split(';').Length - 1 < 1)
有人能告诉我为什么它不会抛出错误,以及为什么if语句为真吗?
.Split()
会抛出一个NullReferenceException
异常,就像任何其他实例方法一样。.Split()
将返回一个单个空字符串的数组(除非您传递StringSplitOptions.RemoveEmptyEntries
)。
这是其更一般(且不那么意外)行为的一种特殊情况;如果分隔符在源字符串中没有出现,则它将返回包含整个源字符串的数组。它应该按照文档所述的行为进行:
如果此实例不包含任何
separator
中的字符,则返回的数组由包含此实例的单个元素组成。
一个空字符串clear不包含separator
中的任何字符,因此返回一个只包含一个指向空字符串的元素的数组。
当然,如果在null引用上调用Split
,则会得到NullReferenceException
。区分对空字符串的引用和null引用很重要。
如果您希望该方法返回一个空数组,请使用StringSplitOptions.RemoveEmptyEntries
。如果您希望结果是错误,请自行检查并抛出所需的异常。
在使用API时,不要猜测其行为,如果有任何疑问,请查看文档。
';'
分割成组件 - 这个操作的结果是字符串数组。如果组件少于2个,则条件为真。