Programming/c# & winform2020. 9. 21. 12:13

오버플로우를 컴파일 타임이나 런 타임에 확인하도록 하는 키워드

기본적으로 컴파일 타임에 확인이 되도록 되어있고

런타임 체크에서 checked로 되어 있으면 검사하고 unchecked로 되어 있으며 하지 않도록 되는 듯.

 

checked도 unchecked도 지정하지 않으면 상수가 아닌 식(런타임에 계산되는 식)의 기본 컨텍스트는 -checked 컴파일러 옵션의 값으로 정의됩니다. 기본적으로 이 옵션의 값은 설정되지 않으며 unchecked 컨텍스트에서 산술 연산이 실행됩니다.

상수 식(컴파일 시간에 완전히 계산될 수 있는 식)의 경우 기본 컨텍스트는 항상 checked입니다. 상수 식이 unchecked 컨텍스트에 명시적으로 배치되지 않는 경우 식에 대한 컴파일 시간 계산 중 발생하는 오버플로로 인해 컴파일 시간 오류가 발생합니다.

[링크 : https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/checked-and-unchecked]

[링크 : https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/checked]

 

unchecked 환경을 제거하면 컴파일 오류가 발생합니다. 식의 모든 항이 상수이기 때문에 컴파일 시간에 오버플로가 검색될 수 있습니다.

상수가 아닌 항을 포함하는 식은 컴파일 시간 및 런타임에 기본적으로 확인되지 않습니다. checked 환경을 사용하도록 설정하는 방법에 대한 자세한 내용은 checked를 참조하세요.

오버플로를 확인하는 데 시간이 걸리기 때문에 오버플로 위험이 없는 상황에서는 unchecked 코드를 사용하여 성능을 향상할 수 있습니다. 그러나 오버플로가 발생할 가능성이 있는 경우 checked 환경을 사용해야 합니다.

[링크 : https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/unchecked]

'Programming > c# & winform' 카테고리의 다른 글

c# 교과서 표준 입출력 등  (0) 2020.09.21
c# 교과서 - 키워드 정리  (0) 2020.09.21
c#(mono) on ubuntu  (0) 2020.09.21
c# 변수형  (0) 2020.09.18
c# 에서 hex string을 숫자로 변환하기  (0) 2020.09.15
Posted by 구차니