데이터 형식 요약(Visual Basic)
다음 표에서는 Visual Basic 데이터 형식과 각 형식이 지원하는 공용 언어 런타임 형식, 일반 저장소 할당 및 값 범위를 보여 줍니다.
Visual Basic 형식 |
공용 언어 런타임 형식 구조체 |
일반 저장소 할당 |
값 범위 |
---|---|---|---|
구현하는 플랫폼에 따라 다름 |
True 또는 False |
||
1바이트 |
값 범위는 0에서 255까지(부호 없음)입니다. |
||
Char(단일 문자) |
2바이트 |
값 범위는 0에서 65535까지(부호 없음)입니다. |
|
8바이트 |
값 범위는 0:00:00(1년 1월 1일 자정)에서 11:59:59 PM(9999년 12월 31일)까지 입니다. |
||
16바이트 |
값의 범위는 0에서 +/-79,228,162,514,264,337,593,543,950,335(+/-7.9...E+28)†까지(소수 부분이 없음) 또는 0에서 +/-7.9228162514264337593543950335까지(소수 자릿수가 28개가 있음)입니다. 0이 아닌 숫자 중에서 최소 숫자는 +/-0.0000000000000000000000000001(+/-1E-28)†입니다. |
||
Double (배정밀도 부동 소수점) |
8바이트 |
값의 범위는 -1.79769313486231570E+308에서 -4.94065645841246544E-324†까지(음수)입니다. 값의 범위는 4.94065645841246544E-324에서 1.79769313486231570E+308†까지(양수)입니다. |
|
4바이트 |
값의 범위는 -2,147,483,648에서 2,147,483,647까지(부호 있음)입니다. |
||
Long(정수(Long)) |
8바이트 |
값의 범위는 -9,223,372,036,854,775,808에서 9,223,372,036,854,775,807(9.2...E+18 †)까지(부호 있음)입니다. |
|
Object(클래스) |
32비트 플랫폼에서 4바이트 64비트 플랫폼에서 8바이트 |
Object 형식의 변수에는 모든 형식을 저장할 수 있습니다. |
|
1바이트 |
값의 범위는 -128에서 127까지(부호 있음)입니다. |
||
Short(정수(Short)) |
2바이트 |
값의 범위는 -32,768에서 32,767까지(부호 있음)입니다. |
|
Single (단정밀도 부동 소수점) |
4바이트 |
값의 범위는 -3.4028235E+38에서 -1.401298E-45†까지(음수) 또는 1.401298E-45에서 3.4028235E+38†까지(양수)입니다. |
|
String (가변 길이) |
String(클래스) |
구현하는 플랫폼에 따라 다름 |
0에서 약 20억 개의 유니코드 문자입니다. |
4바이트 |
값의 범위는 0에서 4,294,967,295까지(부호 없음)입니다. |
||
8바이트 |
값의 범위는 0에서 18,446,744,073,709,551,615(1.8...E+19 †)까지(부호 없음)입니다. |
||
사용자 정의(구조체) |
(ValueType에서 상속) |
구현하는 플랫폼에 따라 다름 |
구조체의 각 멤버는 데이터 형식에 의해 결정되고 다른 멤버의 범위와는 무관한 범위를 갖습니다. |
2바이트 |
값의 범위는 0에서 65,535까지(부호 없음)입니다. |
† 과학적 표기법에서 "E"는 10의 거듭제곱을 나타냅니다. 따라서 3.56E+2는 3.56 x 102, 즉 356을 나타내고 3.56E-2는 3.56 / 102, 즉 0.0356을 나타냅니다.
참고
텍스트를 포함하는 문자열에서는 StrConv 함수를 사용하여 텍스트 형식을 다른 형식으로 변환하십시오.
메모리 사용
기본 데이터 형식을 선언할 때 메모리 사용량이 일반 저장소 할당량과 같다고 가정하는 것은 위험합니다. 이는 다음과 같이 고려해야 할 사항이 있기 때문입니다.
저장소 할당. 공용 언어 런타임에서 응용 프로그램이 실행되고 있는 플랫폼의 특성에 따라 저장소를 할당할 수 있습니다. 메모리에 여유 공간이 거의 없으면 선언된 요소가 가능한 서로 인접하도록 함께 묶입니다. 다른 경우에는 성능을 최적화하기 위해 자연스러운 하드웨어 경계에 메모리 주소를 맞출 수 있습니다.
플랫폼 너비. 64비트 플랫폼에서의 저장소 할당은 32비트 플랫폼에서의 할당과 다릅니다.
복합 데이터 형식
구조체나 배열과 같은 복합 데이터 형식의 각 멤버에는 같은 고려 사항이 적용됩니다. 단순히 형식 멤버의 일반 저장소 할당량을 모두 더하는 것만으로 필요한 메모리를 계산할 수는 없습니다. 또한 다음과 같은 다른 고려 사항도 적용됩니다.
오버헤드. 일부 복합 형식에는 메모리가 추가로 필요합니다. 예를 들어, 배열은 배열 자체뿐 아니라 각 차원에 대해서도 메모리를 사용합니다. 32비트 플랫폼의 경우 현재 각 차원에 대해 기본적인 12바이트 외에 8바이트가 추가로 필요합니다. 64비트 플랫폼에서는 이 요구 사항이 두 배로 증가합니다.
저장소 레이아웃. 메모리에서 저장소의 순서가 사용자의 선언 순서와 동일하다고 가정할 수 없습니다. 심지어 2바이트 또는 4바이트 경계와 같은 바이트 정렬을 가정할 수도 없습니다. 클래스나 구조체를 정의하는 중이며 해당 멤버의 저장소 레이아웃을 제어해야 할 경우 StructLayoutAttribute 특성을 클래스나 구조체에 적용할 수 있습니다.
개체 오버헤드
기본 또는 복합 데이터 형식을 참조하는 Object는 해당 데이터 형식에 포함된 데이터 외에 4바이트를 추가로 사용합니다.