C에서 정수 승격을 포함하지 않는 컨텍스트 에서 부호없는 값은 "래핑"추상 대수 고리의 멤버로 작동하도록 지정되었습니다. 따라서 XY는 X에 추가 될 때 X를 생성하는 고유 한 값을 생성합니다. ), 부호있는 정수 유형은 계산이 특정 범위 내에있을 때 정수처럼 동작하는 것으로 지정되었으며 계산이 그 범위를 넘어 서면 아무것도 할 수 없었습니다. 그러나 C #의 숫자 의미론은 완전히 다릅니다. 확인 된 숫자 컨텍스트 내에서 부호있는 유형과 부호없는 유형 모두 계산이 범위 내에 머무르면 정수처럼 동작 OverflowException하고 그렇지 않은 경우에는 던져집니다 . 확인되지 않은 상황에서 둘 다 대수 고리처럼 동작합니다.
Int32컴팩트 스토리지 또는 운송을 위해 물건을 포장하거나 포장을 풀어야 할 때보 다 작은 데이터 유형을 사용하는 것이 일반적으로 가치있는 유일한 시간 입니다. 50 억 개의 양수를 저장해야하고 모두 0에서 100 사이의 범위에 있으면 4 개가 아닌 1 바이트를 사용하면 1.5GB의 저장 공간이 절약됩니다. 크게 절약됩니다. 그러나 코드 조각에 총 수백 개의 값을 저장해야하는 경우 각 값을 4 개가 아닌 1 바이트로 만들면 약 600 바이트가 절약됩니다. 아마도 귀찮게 할 가치가 없습니다.
부호없는 유형과 관련하여 정보 교환을 수행하거나 숫자를 조각으로 나눌 때 실제로 유용한 유일한 시간입니다. 예를 들어 96 비트 정수에서 수학을 수행해야하는 경우 부호없는 정수 그룹보다 부호없는 32 비트 정수 3 개의 그룹에서 계산을 수행하는 것이 훨씬 쉽습니다. 그렇지 않으면 부호있는 32 비트 또는 64 비트 값의 범위가 적절하지 않은 상황은 많지 않지만 같은 크기의 부호없는 값으로 충분합니다.