VB.Net NullReferenceException
在“如果aryTemp(1)VB.Net NullReferenceException,vb.net,Vb.net,在“如果aryTemp(1)
Private Sub btnAscending_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAscending.Click
'load all students into array
Dim arySort(numberOfRecords) As String
Dim aryTemp(6) As String
Dim aryTemp2(6) As String
For i = 0 To numberOfRecords - 1
arySort(i) = lstListBox.Items(i)
Next
Dim temp As String 'holds temporary record
Dim k As Integer
For i = 0 To arySort.Length - 2
aryTemp = Split(arySort(i), " ")
For k = i + 1 To arySort.Length - 1
aryTemp2 = Split(arySort(k), " ")
If aryTemp(1) < aryTemp2(1) Then
temp = arySort(k)
arySort(k) = arySort(i)
arySort(i) = temp
End If
Next
Next
lstListBox.Items.Clear()
numberOfRecords = 0
isLoaded = False
For i = 0 To arySort.Length - 1
lstListBox.Items.Add(arySort(i))
numberOfRecords += 1
Next
currentRecord = 0
isLoaded = True
End Sub
Private Sub btnAscending\u Click(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理btnAscending。单击
'将所有学生加载到数组中
按字符串排序(numberOfRecords)
Dim aryTemp(6)作为字符串
Dim aryTemp2(6)作为字符串
对于i=0到numberOfRecords-1
arySort(i)=lstListBox.Items(i)
下一个
Dim temp As字符串“保存临时记录”
将k变为整数
对于i=0到arySort.Length-2
aryTemp=拆分(arySort(i),“”)
对于k=i+1到arySort.Length-1
aryTemp2=Split(arySort(k),“”)
如果aryTemp(1)
好吧,arySort
或lstListBox
都是什么都没有
,但是如果没有更多的代码,我就说不出来了。调试器可能会有所帮助。A说明了一切
尝试取消引用空对象引用时引发的异常
这意味着您正试图访问一个实际上尚未赋值的变量,或者未赋值。对于类对象,这意味着您的对象没有实例化
对于列表框
,如果它是无
,则需要实例化它
对于数组arySort
,您是否初始化了它,或者它仍然是Nothing
当您面临这样一个NullReferenceException时,问问自己是否拥有所有预期的初始化和实例化。当一个变量不应该是Nothing
时,问问自己为什么是这样。对自己的提问很可能会引导你正确地解决问题
另一个好的做法是在尝试访问变量之前验证变量是否为Nothing
编辑#1
索引超出了数组的边界
这是一个
尝试访问索引超出数组边界的数组元素时引发的异常。该类不能被继承
每当试图访问实际超出其长度的数组索引时,就会引发此异常
object[] objects = new object() { 1, 2, 3 };
for (int index = 0; index <= objects.Length; index++) {
// The following line will throw an `IndexOutOfRangeException` when index = objects.Length
Console.WriteLine(objects[index].ToString());
}
总结一下,你总是要考虑一个基于零的索引,即数组长度-1。
for (int index = 0; index < objects.Length; i++)
Console.WrilteLine(object[index]);
谢谢你提供的信息(我会记得的),我已经找到了解决方案。新问题仍然是个问题,明白了。新问题已发布,而不是原来的问题。请不要这样做。为一个新问题发布一个新问题。你的代码在哪里抛出的更准确?从什么时候开始,你可以在VB.NET中分配一个数组而不使用
new
关键字?正确的语法不是新字符串(6),还是我在这里遗漏了什么?
for (int index = 0; index < objects.Length; i++)
Console.WrilteLine(object[index]);
1
2
3