반응형
묵시적인 형변환은 캐스팅을 할필요없이 대입만 시켜주면 자동으로 들어간다.
작은 크기의 value 가 큰 크기의 value 속에 들어간다면 이것이 가능하나
큰 크기의 value 가 작은 크기의 value type 에 들어간다면 casting 을 해줘야한다.
묵시적인 형변환이 가능한 관계도의 그림이다
위에서 말했듯이 명시적인 캐스팅을 하게 되면 아래와 같은 경우 출력형태가 틀려질수 있다
크기가 큰 long 이 int 로 캐스팅이 되게 되면 엉뚱한 값이 들어가게 된다.
-1 이라는 엉뚱한 값이 출력된다. 이 소스를 출력한 값이다
이것은 에러이다. 작성자가 없하는 의도는 아닐것이다. 그러면 이것을 체크해서 에러인지 알아내야하는데
이 검사를 해주는것이 Overflow 를 검사하는 checked 구문을 사용한다.
이 구문을 사용해서 문장을 완성해 보도록 한다. 여기엔 try/catch 구문을 사용해 Exception 예외로
에러를 걸러 낼것이다.
작은 크기의 value 가 큰 크기의 value 속에 들어간다면 이것이 가능하나
큰 크기의 value 가 작은 크기의 value type 에 들어간다면 casting 을 해줘야한다.
묵시적인 형변환이 가능한 관계도의 그림이다
위에서 말했듯이 명시적인 캐스팅을 하게 되면 아래와 같은 경우 출력형태가 틀려질수 있다
long longValue = Int64.MaxValue;
int intValue = (int)longValue;
크기가 큰 long 이 int 로 캐스팅이 되게 되면 엉뚱한 값이 들어가게 된다.
-1 이라는 엉뚱한 값이 출력된다. 이 소스를 출력한 값이다
이것은 에러이다. 작성자가 없하는 의도는 아닐것이다. 그러면 이것을 체크해서 에러인지 알아내야하는데
이 검사를 해주는것이 Overflow 를 검사하는 checked 구문을 사용한다.
이 구문을 사용해서 문장을 완성해 보도록 한다. 여기엔 try/catch 구문을 사용해 Exception 예외로
에러를 걸러 낼것이다.
class Program{
public static int
try{
long longValue = Int64.MaxValue;
int intValue = 0;
checked {
intValue = (int)longValue;
}
Console.WriteLine("{0},{1}", longValue, intValue);
}
catch (Exception ex){
Console.WriteLine(ex.Message);
}
return 0;
}
}
이와같이 캐스팅에서 발생할수 있는 문제를 checked 구문을 사용해서
에러를 미연에 방지할수 있다.
반응형
'기타 언어 > C# & MFC' 카테고리의 다른 글
Oracle DB Connection (0) | 2009.03.01 |
---|---|
C# 에서 자기를 호출한 상위함수에게 예외를 던지고 싶을때 (1) | 2009.03.01 |
하나의 project 에서 여러개의 main 함수가 있을때 기본 StartUp 설정방법 (0) | 2009.02.28 |
파라미터로 가변인자 params 키워드 사용하여 배열로 넘기기 (0) | 2009.02.28 |
Install Shield 2008 로 사이트 바로가기 만들기 - 2 (0) | 2008.12.10 |
Install Shield 2008 로 사이트 바로가기 만들기 - 1 (0) | 2008.12.10 |
라이브러리를 링크해서 사용하고 싶을때 (0) | 2008.12.07 |
IOCPNet - Ultimate IOCP (0) | 2008.12.07 |