Размер массива в Visual Basic?

В Visual Basic размер массива array объявляется с помощью верхней границы массива, где sub-arrays в большинстве языков размер static-array массива объявляется путем jsonarray указания количества элементов в массив. Если jsonarray вы не знаете об этом, тогда vb.net ваши массивы Visual Basic string-array в конечном итоге будут на array 1 элемент длиннее, чем вы character-arrays ожидали:

VB.NET:

 Dim a(1) as Byte ' under the hood, translated to byte[2] 
 Console.WriteLine("{0}", a.Length) ' output 2

 a(0) = 7 ' No error, element exists
 a(1) = 7 ' No error, element exists, array length is 2
 a(a.Length) = 7  ' error: Index was outside the bounds of the array.

C#:

 byte[] a = new byte[1];
 Console.WriteLine("{0}", a.Length); // output 1

 a[0] = 7 // No error, element exists
 a[1] = 7 // error:  Index was outside of bounds of the array. (because array length is 1)
 a[a.Length] = 7; // error: Index was outside the bounds of the array.

Причина, по vb которой Microsoft разработала vb VB.NET для определения размера jsonarray массивов на основе верхней vb границы, а не длины массива, заключается jsonarray в том, чтобы упростить перенос vb.net кода с VB6 на VB.NET. Начальный sub-arrays индекс массива VB6 равен vb 1, если вы не объявляете array-of-objects Option Base 0. Было обычным jsonarray делом перебирать массив размера bytearray N с помощью For i = 1 To N. Разработав swift-array VB.NET, чтобы интерпретировать sub-arrays аргумент размера массива bytearray как верхнюю границу, а не vb.net количество элементов в массиве, старый javascript-array код VB6, который зацикливался static-array от 1 до N, можно было напрямую bytearray перенести на VB.NET. Массив swift-array в VB.NET будет иметь один arrays дополнительный элемент по vb.net сравнению с массивом в VB6 swift-array (элемент с индексом 0), но javascript-array в остальном будет вести себя bytearray так же, как в VB6.

Иногда sub-arrays можно увидеть, как люди утверждают, что character-arrays Visual Basic создает «бесполезный» элемент. Это array верно только при переносе vb устаревшего кода VB6, который sub-arrays не ожидал элемента с индексом array-of-objects 0. При написании нового кода swift-array вам просто нужно помнить, что javascript-array означает параметр размера sub-arrays (верхняя граница, а не количество array-of-objects элементов), и соответствующим character-arrays образом объявлять массивы. Просто array-of-objects уменьшите параметры размера static-array на единицу по сравнению с bytearray тем, что вы видели бы в C#. Результирующий vb массив будет содержать элементы char-array от a(0) до a(a.Length-1), как и массив C#.

vb.net

arrays

2022-10-04T22:38:19+00:00