Type Conversion : 형변환
각 자료형은 서로 변환하는 것이 가능할 수 있습니다.
부가적인 코드를 지정하지 않고 형변환(Type Conversion)되는 것을 암시적 변환이라 합니다.
개발자가 명시적으로 형변환임을 알리는 것을 명시적 변환이라 합니다 .
암시적 변환
기본 제공 숫자 형식의 경우 저장되는 값이 잘리거나 반올림되지 않고 변수에 맞출 수 있을 때 암시적 변환을 수행할 수 있습니다.
이것은 정수 형식의 경우 소스 형식의 범위가 대상 유형에 대한 범위의 적절한 하위 집합임을 의미합니다.
예를 들어 long 형식의 변수(64비트 정수)는 int(32비트 정수)가 저장할 수 있는 모든 값을 저장할 수 있습니다.
// Implicit conversion. A long can
// hold any value an int can hold, and more!
int num = 2147483647;
long bigNum = num;
참조 형식의 경우 클래스에서 직접 또는 간접 기본 클래스나 인터페이스로의 암시적 변환이 항상 존재합니다.
파생 클래스에 항상 기본 클래스의 모든 멤버가 포함되므로 특수 구문이 필요하지 않습니다.
Derived d = new Derived();
// Always OK.
Base b = d;
명시적 변환
변환을 수행할 때 정보 손실의 위험이 있는 경우에는 컴파일러에서 캐스트라는 명시적 변환을 수행해야 합니다.
캐스트는 변환을 수행하고자 하고 데이터 손실이 발생하거나 런타임에 캐스트가 실패할 가능성을 알고 있음을 컴파일러에 명시적으로 알리는 방법입니다.
캐스트를 수행하려면 변환할 값 또는 변수 앞에 캐스트할 형식을 괄호 안에 지정합니다.
class Test
{
static void Main()
{
double x = 1234.7;
int a;
// Cast double to int.
a = (int)x;
System.Console.WriteLine(a);
}
}
// Output: 1234
참조 형식의 경우 기본 형식에사 파생 형식으로 변환해야 할 경우에는 명시적 캐스트가 필요합니다.
// Create a new derived type.
Giraffe g = new Giraffe();
// Implicit conversion to base type is safe.
Animal a = g;
// Explicit conversion is required to cast back
// to derived type. Note: This will compile but will
// throw an exception at run time if the right-side
// object is not in fact a Giraffe.
Giraffe g2 = (Giraffe)a;
'C#' 카테고리의 다른 글
C# Value Type : 값 형식 (0) | 2023.01.12 |
---|---|
C# Boxing 및 Unboxing : 박싱 및 언박싱 (0) | 2023.01.11 |
C# Memory : 메모리 (0) | 2023.01.10 |
C# 병렬화와 비동기 패턴 (0) | 2023.01.09 |
반복문 : for, foreach, do 및 while (0) | 2023.01.09 |