다음을 통해 공유


.NET Framework 형식의 데이터 형식

업데이트: 2007년 11월

Visual Basic의 모든 기본 데이터 형식은 System 네임스페이스의 구조체나 클래스에서 지원합니다. 컴파일러는 각 데이터 형식 키워드를 내부 구조체나 클래스의 별칭으로 사용합니다. 예를 들어, 예약어 Byte를 사용하여 변수를 선언하는 것은 System.Byte라는 정규화된 구조체 이름을 사용하여 선언하는 것과 같습니다.

.NET Framework에서 사용할 수 있는 추가 클래스 및 구조체

또한 CLR(공용 언어 런타임)은 Visual Basic에서 지원하지 않는 구조체와 클래스를 지원합니다. 예를 들어, System.Guid 구조체는 GUID(Globally Unique Identifier)를 제공하고 System.TimeZone 클래스는 시간대를 지원합니다. 이러한 형식을 사용하여 변수와 상수를 선언할 수 있으며 .NET Framework에서 이러한 형식에 대해 구현하는 메서드에 액세스할 수 있습니다. 그러나 Visual Basic에서 제공되지 않는 형식에 대해서는 연산이나 형식 변환을 지원하지 않습니다.

값 형식과 참조 형식

.NET Framework에서 구조체는 값 형식이고 클래스는 참조 형식입니다. 이러한 이유로 Char 및 Integer 등의 값 형식은 .NET Framework 구조체에서 구현하지만 Object 및 String 등의 참조 형식은 .NET Framework 클래스에서 지원합니다. 모든 배열은 해당 멤버가 값 형식일 경우에도 항상 참조 형식이고, 모든 구조체는 참조 형식 멤버가 포함된 경우에도 항상 값 형식입니다.

모든 참조 형식은 내부 .NET Framework 클래스를 나타내기 때문에 참조 형식을 초기화할 때는 New(Visual Basic) 키워드를 사용해야 합니다. 다음 문은 배열을 초기화합니다.

Dim totals() As Single = New Single(8) {}

New 키워드를 사용하여 값 형식을 초기화할 수도 있습니다. 이 기능은 형식이 매개 변수를 가진 생성자인 경우에 특히 유용합니다. 이러한 예로는 지정된 부분에서 새 Decimal 값을 만드는 Decimal(Int32, Int32, Int32, Boolean, Byte) 생성자가 있습니다.

데이터 형식 멤버

데이터 형식은 .NET Framework 구조체와 클래스에서 지원하므로 Visual Basic 데이터 형식에는 멤버가 있습니다. 이 멤버에는 생성자, 메서드, 속성 및 필드가 포함됩니다. 개체의 메서드와 속성에 액세스할 때와 마찬가지 방법으로 생성자를 제외한 변수의 멤버에 액세스할 수 있습니다.

다음 예제에서는 System.DateTime 구조체의 Year, MonthDay 속성과 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 필드인 MaxValueMinValue를 노출합니다.

데이터 형식 멤버의 동일성 문제

또한 .NET Framework에서는 Visual Basic 함수 및 키워드에 해당되는 데이터 형식 관련 메서드를 다양하게 제공합니다. 그러나 Visual Basic에서는 .NET Framework 메서드를 사용하지 않고 변환이나 기타 연산을 수행하는 경우도 있으며 수행 결과가 다를 수도 있습니다.

예를 들어, ToSingle 메서드는 Decimal 식에서 CSng 키워드와 같은 유형의 동작을 수행합니다. 그러나 CSng는 System.dataType.ToSingle을 사용하지 않을 수도 있으므로 여백이나 경계 조건에 따라 결과가 달라질 수 있습니다.

일반적으로 Visual Basic 프로그래밍 요소는 사용하기 쉬울 뿐 아니라 코드를 보다 읽기 쉽게 하므로 이를 사용하는 것이 좋습니다. 경우에 따라 .NET Framework 메서드에서 제공하는 추가 기능이 필요할 수도 있습니다. 이러한 예를 보려면 데이터 형식 문제 해결의 "정확한 결과를 반환하지 않는 Mod 연산자"를 참조하십시오.

참고 항목

개념

값 형식과 참조 형식

구조체와 클래스

참조

Boolean

Byte

Char

DateTime

Decimal

Double

Guid

TimeZone