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

.net string.split方法不需要初始化数组,.net,arrays,vb.net,split,nullreferenceexception,.net,Arrays,Vb.net,Split,Nullreferenceexception,有人能解释一下为什么示例1给出了NullReferenceException吗 而示例2可以很好地工作 Dim teachers As String() Dim Paragraph as string = "one,two" 例1 例2 因为您从未指定数组的大小,所以无法根据所需的数组长度初始化内存。因此,由于没有初始化,array0将为null。其中,与第二种情况一样,赋值将自动将某些内存初始化为数组,因为将始终返回一个数组。因为您从未给定数组的大小,所以将内存初始化为所需的数组

有人能解释一下为什么示例1给出了NullReferenceException吗 而示例2可以很好地工作

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

例2


因为您从未指定数组的大小,所以无法根据所需的数组长度初始化内存。因此,由于没有初始化,array0将为null。其中,与第二种情况一样,赋值将自动将某些内存初始化为数组,因为将始终返回一个数组。

因为您从未给定数组的大小,所以将内存初始化为所需的数组长度。因此,由于没有初始化,array0将为null。其中,与第二种情况一样,赋值将自动将某些内存初始化为数组,因为将始终返回一个数组。

首先,赋值是一个字符串数组

Dim teachers As String声明字符串数组,但不指定数组中有多少项,也不初始化其中任何项。此时为空引用

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

teachers(0) = "Mostafa" 'Fails
teachers(1) = "Lina"    'Also fails
String.Split是一个函数,因此当您调用它时,空引用将替换为对String.Split函数创建的字符串数组的引用,因此这可以工作:

教师=莫斯塔法,利纳。斯普利特,c

或者,您可以用一行声明并初始化字符串数组:

Dim teachers As String={Mostafa,Lina}

首先teachers是一个字符串数组

Dim teachers As String声明字符串数组,但不指定数组中有多少项,也不初始化其中任何项。此时为空引用

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

teachers(0) = "Mostafa" 'Fails
teachers(1) = "Lina"    'Also fails
String.Split是一个函数,因此当您调用它时,空引用将替换为对String.Split函数创建的字符串数组的引用,因此这可以工作:

教师=莫斯塔法,利纳。斯普利特,c

或者,您可以用一行声明并初始化字符串数组:

Dim教师作为字符串={Mostafa,Lina}

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