목록Study Memos/C# 2000 Things (16)
KorSA
VS OverflowException 체크 설정이 되어 있을 때, unchecked 키워드를 쓰면 해당 코드는 OVerflowException 체크를 하지 않고 그냥 wrap(비트 절삭) 한다.
Visual Studio 설정을 변경하면 check 키워드 없이도 OverflowException 을 catch 할 수 있다. 만일 checked 나 VS 설정이 안되어있으면 그냥 상위 비트들을 버린 채로(값이 유실된 채로) 연산된다. VS 설정 경로 : Build > Advanced > Advanced Build Settings > Check For Arithmetic overflow / underflow
explicit convert -> 소수점 아래 버림 System.Convert -> 반올림 또는 반내림 -> 만일 딱 중간이면, 가까운 짝수를 리턴 ex) Convert.ToInt32(8.5f) -> 8 Convert.ToInt32(9.5f) ->10
a % b 에서 a나 b가 음수이면, 결과값은 a의 부호와 동일한 부호를 가진다. ex) a > 0 이면 결과값은 1, a < 0 이면 결과값은 -1
소수점이 있는 수들은 기본적으로 double 이므로 float 형 변수에 소수점이 있는 수들을 대입하려면 f suffix가 필요하다. 없으면 dobule -> float 묵시적 변환을 시도함으로써 compile error 가 발생한다
check 키워드 => casting 할 때 결과값이 범위를 벗어나면 Exception을 throw 해준다.
C#에서 type은 크게 3 가지로 나뉜다. 1. built-in (Common Type System 의 일부) 2. custom type(.NET 프레임워크에 정의되어 있음) 3. user-defined type
C# 공부를 하던 중 .NET 프레임워크를 구성하는 CTS (Common Type System) 에 대해 알게 되었다. 대충 살펴보니 C#의 keyword 등을 설계한 아주 fundamental한 개념인 듯 하다. C#, .NET을 잘하려면 좀 더 깊이 공부할 필요가 있어보인다.
모든 value type 은 default constructor를 가지고 있다. ex) int n = new int();