string.split方法不需要初始化数组

时间:2015-04-08 11:15:20

标签: .net arrays vb.net split nullreferenceexception

有人可以解释为什么示例1给出 NullReferenceException 而示例2工作正常

   Dim teachers As String()
   Dim Paragraph as string = "one,two"

示例1

teachers(0) = "Mostafa"
teachers(1) = "Lina"

示例2

teachers = paragraph.Split(",")

2 个答案:

答案 0 :(得分:4)

首先teachers是一个String数组。

Dim teachers As String()声明你的字符串数组,但没有指定数组中有多少项或初始化它们(此时它是一个空引用)

因此,尝试将字符串分配给数组中的项失败(使用NullReferenceException),因为它尚未初始化:

teachers(0) = "Mostafa" 'Fails
teachers(1) = "Lina"    'Also fails

String.Split是一个“Returns a string array”的函数,所以当你调用它时,Null引用被替换,引用了由{{{ 1}}函数,所以这个工作:

String.Split

或者,您可以使用一行声明初始化String数组:

teachers = "Mostafa,Lina".Split(","c)

答案 1 :(得分:1)

因为您从未给出Array的大小,所以要初始化所需数组长度的内存。因此,由于没有初始化,array(0)将为null。在第二种情况下,Assignment会自动将某些内存初始化为数组,因为String.Split将始终返回一个数组。