형식 변환 개요
업데이트: 2007년 11월
모든 값에는 연결된 형식이 있으며, 이러한 형식은 값에 할당되는 공간, 포함할 수 있는 값의 범위, 사용 가능하도록 하는 멤버 등의 특성을 정의합니다. 대부분의 값들은 하나 이상의 형식으로 표현될 수 있습니다. 예를 들어 4라는 값은 정수 값 또는 부동 소수점 값으로 표현될 수 있습니다. 변환을 수행하면 이전 형식과 동일한 값을 가지는 새 형식이 만들어지지만, 두 개체의 ID(또는 실제 값)가 항상 동일하게 유지되지는 않습니다. .NET Framework에서는 암시적인 변환을 지원할 뿐만 아니라 형식 간을 변환하기 위한 메서드를 제공하는 System.Convert 클래스를 통한 명시적 변환도 지원합니다.
참고: |
---|
개별 언어에서도 명시적 변환을 수행하기 위한 방법을 제공할 수 있습니다. 예를 들어 C#에서는 캐스팅 연산자가 사용되고, Visual Basic에서는 CType, CInt 및 DirectCast 등의 컴파일러 구현 변환 함수가 사용됩니다. |
공용 언어 런타임에서는 확대 변환과 축소 변환을 모두 지원합니다. 예를 들어, 부호 있는 32비트 정수로 표현되는 값은 부호 있는 64비트 정수로 변환될 수 있습니다. 이 예는 확대 변환을 나타냅니다. 이와는 반대로 64비트를 32비트로 변환하는 것은 축소 변환의 예를 나타냅니다. 확대 변환으로 인해 정밀도는 손실될 수 있지만 정보가 손실되는 일은 없습니다. 그러나 축소 변환 중에는 정보가 손실될 수 있습니다. 확대 변환의 목록은형식 변환표를 참조하십시오.
다음 예제에서는 확대 변환을 보여 줍니다. 이 변환에서는 Int32 값인 MyInt가 Int64 값으로 변환됩니다. 이 변환은 Convert 클래스 또는 기타 변환 메서드나 연산자를 사용하지 않고 암시적으로 수행됩니다.
Dim MyInt As Integer = 1234567891
Dim MyBigInt As Long = MyInt
Console.WriteLine(MyBigInt) ' Displays 1234567891
int MyInt = 1234567891;
long MyBigInt = MyInt;
Console.WriteLine(MyBigInt); // Displays 1234567891
다음 예제에서는 축소 변환을 보여 줍니다. 이 변환에서는 Int64 값인 MyBigInt가 Int32 값으로 변환됩니다. 이러한 축소 변환은 C#의 경우에는 명시적으로 수행해야 하며, Visual Basic에서는 Option Strict가 설정되어 있으면 명시적으로 수행해야 합니다. 이 예제에서는 ToInt32 메서드를 호출하여 변환을 수행합니다.
Dim MyBigInt As Long = 1234567891
' exception handler: narrowing conversions can overflow
Try
Dim MyInt As Integer = Convert.ToInt32(MyBigInt)
Console.WriteLine(MyInt) ' Displays 1234567891
Catch e As OverflowException
Console.WriteLine("Unable to convert {0} to an integer.", _
MyBigInt)
End Try
long MyBigInt = 1234567891;
// exception handler: narrowing conversions can overflow
try
{
int MyInt = Convert.ToInt32(MyBigInt);
Console.WriteLine(MyBigInt); // Displays 1234567891
}
catch (OverflowException)
{
Console.WriteLine("Unable to convert {0} to an integer.",
MyBigInt);
}
참고 항목
개념
System.Convert를 사용하여 데이터 형식 변환