데이터 형식 구현(Visual Basic)
Visual Basic의 모든 기본 데이터 형식은 System 네임스페이스의 구조체나 클래스에서 지원합니다. 컴파일러는 각 데이터 형식 키워드를 내부 구조체나 클래스의 별칭으로 사용합니다. 예를 들어, 예약어 Byte를 사용하여 변수를 선언하는 것은 System.Byte라는 정규화된 구조체 이름을 사용하여 선언하는 것과 같습니다.
Visual Basic에서는 데이터 형식이 해당 분류를 기반으로 구현됩니다. Visual Basic 데이터 형식은 특정 형식의 변수가 자신의 데이터를 저장하는지 또는 데이터에 대한 포인터를 저장하는지에 따라 분류할 수 있습니다. 데이터 형식이 자신의 데이터를 저장하는 경우에는 값 형식이고 데이터에 대한 포인터를 메모리에 저장하는 경우에는 참조 형식입니다.
값 형식
값 형식은 자신의 메모리 할당 영역에 데이터를 가지는 데이터 형식입니다. 값 형식에는 다음 항목이 포함됩니다.
모든 숫자 데이터 형식
Boolean, Char 및 Date
모든 구조체(구조체의 멤버가 참조 형식인 경우도 포함)
열거형(내부 형식이 항상 SByte, Short, Integer, Long, Byte, UShort, UInteger 또는 ULong이기 때문)
모든 구조체는 참조 형식 멤버가 포함된 경우에도 항상 값 형식입니다. 따라서 Char 및 Integer와 같은 값 형식이 .NET Framework 구조체에서 구현됩니다.
Decimal 등의 예약 키워드를 사용하여 값 형식을 선언할 수 있습니다. New 키워드를 사용하여 값 형식을 초기화할 수도 있습니다. 이 기능은 형식이 매개 변수를 가진 생성자인 경우에 특히 유용합니다. 이러한 예로는 지정된 부분에서 새 Decimal 값을 만드는 Decimal(Int32, Int32, Int32, Boolean, Byte) 생성자가 있습니다.
참조 형식
참조 형식은 데이터가 저장된 다른 메모리 위치에 대한 포인터를 가집니다. 참조 형식에는 다음 항목이 포함됩니다.
String
배열의 요소가 값 형식인 경우까지 포함한 모든 배열
클래스 형식(예: Form)
대리자
클래스는 참조 형식입니다. 따라서 Object 및 String과 같은 참조 형식이 .NET Framework 클래스에서 지원됩니다. 모든 배열은 해당 멤버가 값 형식인 경우에도 항상 참조 형식입니다.
모든 참조 형식은 내부 .NET Framework 클래스를 나타내기 때문에 참조 형식을 초기화할 때는 New 연산자(Visual Basic) 키워드를 사용해야 합니다. 다음 문은 배열을 초기화합니다.
Dim totals() As Single = New Single(8) {}
.NET Framework에서 사용할 수 있는 추가 형식
또한 CLR(공용 언어 런타임)은 Visual Basic에서 지원하지 않는 구조체와 클래스를 지원합니다. 예를 들어, System.Guid 구조체는 GUID(Globally Unique Identifier)를 제공하고 System.TimeZone 클래스는 시간대를 지원합니다. 이러한 형식을 사용하여 변수와 상수를 선언할 수 있으며 .NET Framework에서 이러한 형식에 대해 구현하는 메서드에 액세스할 수 있습니다. 그러나 Visual Basic에서 제공되지 않는 형식에 대해서는 연산이나 형식 변환을 지원하지 않습니다.
형식이 아닌 요소
다음 프로그래밍 요소는 선언된 요소의 데이터 형식으로 지정할 수 없으므로 형식이 될 수 없습니다.
네임스페이스
모듈
이벤트
속성 및 프로시저
변수, 상수 및 필드
Object 데이터 형식에 대한 작업
참조 형식이나 값 형식을 Object 데이터 형식의 변수에 할당할 수 있습니다. Object 변수는 항상 데이터 자체를 가지는 것이 아니라 데이터에 대한 포인터를 가집니다. 그러나 값 형식을 Object 변수에 할당할 경우 이 변수는 자체 데이터를 가지는 것처럼 동작합니다. 자세한 내용은 Object 데이터 형식을 참조하십시오.
Microsoft.VisualBasic 네임스페이스에 있는 Information 클래스의 IsReference 메서드에 Object 변수를 전달하면 이 변수가 참조 형식으로 동작하는지 또는 값 형식으로 동작하는지를 알 수 있습니다. Information.IsReference는 Object 변수의 내용이 참조 형식을 나타낼 경우 True를 반환합니다.
데이터 형식 멤버
데이터 형식은 .NET Framework 구조체와 클래스에서 지원하므로 Visual Basic 데이터 형식에는 멤버가 있습니다. 이 멤버에는 생성자, 메서드, 속성 및 필드가 포함됩니다. 개체의 메서드와 속성에 액세스할 때와 마찬가지 방법으로 생성자를 제외한 변수의 멤버에 액세스할 수 있습니다.
다음 예제에서는 System.DateTime 구조체의 Year, Month 및 Day 속성과 DaysInMonth 메서드를 사용하여 현재 달의 남은 일 수를 확인합니다.
Dim current As Date = Now
Dim daysRemaining As Integer
daysRemaining = Date.DaysInMonth(current.Year, current.Month) - current.Day
데이터 형식 멤버에 대한 참조는 형식 이름(Date) 또는 해당 형식이 되도록 선언할 변수의 이름(current)을 사용하여 한정해야 합니다.
데이터 형식 멤버 예제
다음 코드 프로토타입에서는 데이터 형식에 유용한 몇 가지 메서드, 속성 및 필드를 보여 줍니다.
<Char>.IsDigit() ' Returns True if character is a numeric digit.
<Char>.IsLower() ' Returns True if character is a lowercase letter.
<Date>.IsLeapYear() ' Returns True if current year is a leap year.
<Date>.ToUniversalTime() ' Returns local date/time converted to UTC.
<Double>.IsInfinity() ' Returns True if contents represent infinity.
<Double>.IsNaN() ' Returns True if contents are not a number (0/0).
<Long>.MaxValue ' Constant representing largest positive Int64 value.
<Object>.GetType() ' Returns Type object representing type of <Object>.
<Object>.GetType().GetTypeCode() ' Returns type code of <Object>.
<String>.Chars(<index>) ' Character at position <index> of <String>.
<String>.Length ' Number of characters currently in <String>.
Byte와 Char를 비롯한 모든 숫자 형식은 이러한 형식을 처리할 때 매우 유용한 public 필드인 MaxValue와 MinValue를 노출합니다.
데이터 형식 멤버의 동일성 문제
또한 .NET Framework에서는 Visual Basic 함수 및 키워드에 해당되는 데이터 형식 관련 메서드를 다양하게 제공합니다. 그러나 Visual Basic에서는 .NET Framework 메서드를 사용하지 않고 변환이나 기타 연산을 수행하는 경우도 있으며 수행 결과가 다를 수도 있습니다.
예를 들어, ToSingle 메서드는 Decimal 식에서 CSng 키워드와 같은 유형의 동작을 수행합니다. 그러나 CSng는 System.dataType.ToSingle을 사용하지 않을 수도 있으므로 여백이나 경계 조건에 따라 결과가 달라질 수 있습니다.
일반적으로 Visual Basic 프로그래밍 요소는 사용하기 쉬울 뿐 아니라 코드를 보다 읽기 쉽게 하므로 이를 사용하는 것이 좋습니다. 경우에 따라 .NET Framework 메서드에서 제공하는 추가 기능이 필요할 수도 있습니다. 이러한 예를 보려면 데이터 형식 문제 해결(Visual Basic)의 "정확한 결과를 반환하지 않는 Mod 연산자"를 참조하십시오.
관련 단원
용어 |
정의 |
Visual Basic 데이터 형식을 소개하고 사용 방법에 대해 설명합니다. |
|
Visual Basic에서 제공하는 기본 데이터 형식 목록을 제공합니다. |
|
다른 데이터 형식으로 값을 변경하는 과정인 형식 변환에 대해 설명합니다. |
|
Structure 키워드로 선언된 사용자 정의 형식인 구조체에 대해 설명합니다. |
|
데이터 형식을 사용하여 실행 속도를 증가시키는 방법에 대해 설명합니다. |
|
모든 데이터 형식의 데이터를 참조하는 데 사용할 수 있는 Object 데이터 형식에 대해 설명합니다. |