Vb.net 2010 Express中非常奇怪的行为。这是代码:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim a As Integer
'... Other lines...'
Dim di As New IO.DirectoryInfo(App_Path & "midi\")
Dim diar1 As IO.FileInfo() = di.GetFiles()
For a = 0 To diar1.Count
midrep(a) = diar1(a).Name
Next a
Preload()
End Sub
由于某种原因,不执行带有“Preload()”指令的最后一行。 (我检查了一个断点,它甚至没有得到它)。
如果我删除循环,它可以正常工作。在循环中,我没有得到任何错误或警告,但最后一行被完全忽略。 for循环正确执行。
我需要Preload()之前的循环。
任何人都知道如何解决这个问题?
谢谢大家
答案 0 :(得分:2)
我会冒险猜测你没有离开For
循环,因为你超出了midrep
的范围(你没有给我们这个类型of)或diar1
,这显然是FileInfo
个对象的数组。
事实上,无论midrep
的定义如何,你肯定超出了diar1
的范围,因为diar1.Count
总是比最后一个可用索引高一个。您需要停止之前>>到diar1.Count
。
For a = 0 To diar1.Count - 1
' ^^^^
midrep(a) = diar1(a).Name
Next a