간단한 정수 캐스팅 하나!

long longValue = 1;
int intValue = longValue;

이 코드는 컴파일러 오류를 발생시킨다.

오류 CS0266: 암시적으로 'long' 형식을 'int' 형식으로 변환할 수 없습니다. 명시적 변환이 있습니다. 캐스트가 있는지 확인하십시오.

역시 간단한 상황!

var longList = new List<long> {1, 2, 3};
foreach(int intValue in longList)
{
    
}

어이없게도 컴파일 된다. 이 때문에 응용프로그램을 실행한 후에야 버그를 발견했다. 왜 이런 걸까?