컴퓨터공학과 가고 싶어했고, 게임만 하면서 시간 보내는 것 보다는 유익할 것 같아, 책 처음 펴서 천천히 앞부터 예제 타이핑하면서 진도 나가고 있습니다.

언어는 C#보고 있고, 책은 뇌를 자극하는 C# 4.0 입니다. 지금 6.0이 최신이던데 고등학교 1학년 때 샀던 책이라...


데이터 보관하기 장에서 박싱/언박싱 예제인데


원래가

56        int A = 123;
            object B = (object)A;
            int C = (int)B;

           Console.WriteLine(A);
            Console.WriteLine(B);
            Console.WriteLine(C);


입니다. CMD 창에서 정상적으로 123 세개 출력되고, 예제와 같습니다.


제가 이리저리 건드려보다가


56        sbyte A = 123;
            object B = (object)A;
            int C = (int)B;

            Console.WriteLine(A);
            Console.WriteLine(B);
            Console.WriteLine(C);


이렇게 int A 부분을 sbyte A로 바꾸어 보았는데 (sbyte가 -127 ~ 127 까지라 123은 괜찮을 것이라고 생각했습니다.) 컴파일 과정에서 오류는 안나오는데 CMD 창에서 실행하면


처리되지 않은 예외: System.InvalidCastException: 지정한 캐스트가 잘못되었습니다.

...위치 56줄


이렇게 오류가 납니다.


왜 이런 문제가 생기는 건가요?