2015-08-01 1 views
-5

Почему следующий код дает IndexOutOfRangeException в VB.Net:для каждого цикла в Visual Basic: IndexOutOfRangeException

Dim intNum() As Integer = {1, 2, 3, 4, 5} 
    Dim tot As Integer 
    For Each n As Integer In intNum 
     tot = tot + intNum(n) 
    Next 
    MsgBox(tot) 
+0

Почему бы не дать такое исключение? –

+1

Что это связано с Java? – Reimeus

+1

Вы уверены, что это Java? – dasblinkenlight

ответ

3

Предполагая, что вы имеете в виду VB.NET, индексы массива в диапазоне от 0 до верхней границы массива из 4 которого превышает при последнем индексе. Если вы хотите суммировать элементы, вы можете сделать

For Each n As Integer In intNum 
    tot = tot + n 
Next 
2

Или используйте некоторые встроенные функции.

Dim intNum() As Integer = {1, 2, 3, 4, 5} 
Dim total = intNum.Sum() 
+0

Возможно, вы не поверите, сколько парней не используют расширение; хороший оле 'Linq для спасения. – Codexer

+0

Я люблю 'LINQ'ing! – OneFineDay

+0

Я тоже. Единственная проблема, с которой я когда-либо сталкивался, - это когда кто-то из других инженеров попал, потому что это запутывает или долго читает. Но это также происходит от того, кто его не использует. Это может быть мощным, когда вам это нужно ... – Codexer