有人可以解释为什么示例1给出 NullReferenceException 而示例2工作正常
Dim teachers As String()
Dim Paragraph as string = "one,two"
示例1
teachers(0) = "Mostafa"
teachers(1) = "Lina"
示例2
teachers = paragraph.Split(",")
答案 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
将始终返回一个数组。