C# is 와 as

jiyul·2024년 2월 19일
0

C#

목록 보기
19/21

형식 변환

int i;

// error CS0029: Cannot implicitly convert type 'string' to 'int'
i = "Hello";

i를 int로 선언한 후에는 다음 코드와 같이 문자열 "Hello"를 할당할 수 없습니다.

그래서 형식 변환을 해주어야 합니다.

  1. 암시적 변환
  2. 명시적 변환(캐스트)
  3. 사용자 정의 변환
  4. 도우미 클래스를 사용한 변환

그 중에 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, as

is : 객체가 해당 형식에 해당하는지를 검사하여 그 결과를 bool 값으로 반환

as : 형식 변환 연산자(캐스팅)와 동일한 역할. 캐스팅은 실패하는 경우 예외를 던지는 반면 as는 null을 리턴한다.

사용 예시

  • 일반적인 캐스트 방식 : 예외 처리를 해줘야 합니다.
try
{
    Student objStudent = (Student)myobject;
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
  • is
if (myobject is Student)
{
    Student objStudent = (Student)myobject;
}
  • as
Student objStudent = myobject as Student;
if (objStudent != null)
{
    //use the object
}
profile
Let's take the lead

0개의 댓글

관련 채용 정보