programing

Visual Basic의 배열 크기?

elecom 2023. 5. 8. 21:52
반응형

Visual Basic의 배열 크기?

이 코드는 VB에서 사용해 보았습니다.

Dim a(1) As Byte
Console.WriteLine(a.Length)

출력은 "2"입니다.왜 그런지 아는 사람?

C/C++/C# 언어에 익숙한 경우 배열을 선언할 때 배열의 요소 를 사용하여 초기화합니다.

C# : byte a[] = new byte[1]

요소가 1개인 바이트 배열을 선언합니다(upperBound = 0).

VB에서는 어레이를 선언할 때 초기화에 사용되는 매개 변수가 어레이의 UpperBound를 나타내는 동작이 다릅니다.

VB.NET: Dim a(1) As Byte

2개의 요소(상한 = 1)로 바이트 배열을 선언합니다.

Visual Basic에서는 배열의 크기가 배열의 상한으로 선언되며, 여기서 대부분의 언어는 배열의 요소 를 지정하여 배열의 크기를 선언합니다.이를 모를 경우 Visual Basic 어레이는 예상보다 1개의 요소가 더 길어집니다.

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를 설계한 이유.어레이 길이가 아닌 상한을 기준으로 어레이 크기를 조정하는 NET은 VB6에서 VB로 코드를 이식하기 쉽게 하기 위한 것입니다.NET. 옵션 기준 0을 선언하지 않는 한 VB6 어레이의 초기 인덱스는 1입니다.다음을 사용하여 크기가 N인 배열을 반복하는 것이 일반적이었습니다.For i = 1 To NVB를 디자인함으로써.배열의 크기 조정 인수를 배열의 요소 수가 아닌 상한으로 해석하는 NET, 1에서 N으로 루프된 이전 VB6 코드를 VB로 직접 포팅할 수 있습니다.NET. VB 배열의배.NET은 어레이가 VB6에서 가졌던 요소(인덱스 0에 있는 요소)와 비교하여 하나의 추가 요소를 갖지만, 그렇지 않으면 VB6에서 그랬던 것처럼 동작합니다.

때때로 Visual Basic이 "낭비된" 요소를 만든다고 주장하는 사람들을 볼 수 있습니다.이는 인덱스 0에 요소가 필요하지 않은 레거시 VB6 코드를 포팅하는 경우에만 해당됩니다.새 코드를 작성할 때는 크기 조정 매개 변수가 의미하는 바(요소 수가 아닌 상한)를 기억하고 그에 따라 배열을 선언하기만 하면 됩니다.C#에서 볼 수 있는 것보다 크기 조정 매개 변수를 하나만 줄여도 됩니다.결과 배열에 다음과 같은 요소가 포함됩니다.a(0)a(a.Length-1)마치 C# 배열처럼.

배열은 위치 0부터 시작합니다.두 위치를 정의하고 있습니다.

하나의 위치만 원하는 경우:

Dim a(0) As Byte

그러면 당신은 a를 얻을 것입니다.길이는 1입니다.

치수 길이 각 치수의 인덱스는 0을 기준으로 하며, 이는 0에서 상한까지 범위가 있음을 의미합니다.따라서 지정된 차원의 길이가 해당 차원에 대해 선언된 상한보다 1만큼 큽니다.

Visual Basic의 배열 크기

이전 답안에는 각각 정답이 있지만 전체 정답은 아닙니다.배열을 선언할 때(코드:Dima(1) 바이트로 배열 선언에 입력한 숫자(이 경우 1)는 배열에 있는 항목 수를 나타내는 것이 아니라 배열의 상한을 나타내는 것입니다.

그래서, 당신의 선언에서, 당신은 2개의 항목으로 배열을 만들고 있습니다: a(0)와 a(1).

언급URL : https://stackoverflow.com/questions/506207/size-of-array-in-visual-basic

반응형