int i;
// error CS0029: Cannot implicitly convert type 'string' to 'int'
i = "Hello";
i를 int로 선언한 후에는 다음 코드와 같이 문자열 "Hello"를 할당할 수 없습니다.
그래서 형식 변환을 해주어야 합니다.
그 중에 is와 as는 2번 명시적 변환(캐스트)에 사용됩니다.
class Test
{
static void Main()
{
double x = 1234.7;
int a;
// Cast double to int.
a = (int)x;
System.Console.WriteLine(a);
}
}
// Output: 1234
변환을 수행할 때 정보 손실의 위험이 있는 경우에는 컴파일러에서 캐스트라는 명시적 변환을 수행해야 합니다.
캐스트는 변환을 수행하고자 하고 데이터 손실이 발생하거나 런타임에 캐스트가 실패할 가능성을 알고 있음을 컴파일러에 명시적으로 알리는 방법입니다.
캐스트를 수행하려면 변환할 값 또는 변수 앞에 캐스트할 형식을 괄호 안에 지정합니다. 위 프로그램은 double을 int로 캐스트합니다. 캐스트가 없으면 프로그램이 컴파일되지 않습니다.
is : 객체가 해당 형식에 해당하는지를 검사하여 그 결과를 bool 값으로 반환
as : 형식 변환 연산자(캐스팅)와 동일한 역할. 캐스팅은 실패하는 경우 예외를 던지는 반면 as는 null을 리턴한다.
try
{
Student objStudent = (Student)myobject;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
if (myobject is Student)
{
Student objStudent = (Student)myobject;
}
Student objStudent = myobject as Student;
if (objStudent != null)
{
//use the object
}