답변:
모든 언어에 부호없는 정수 개념이있는 것은 아닙니다. 예를 들어 VB 6에는 서명되지 않은 int의 개념이 없었기 때문에 VB7 / 7.1의 디자이너가 구현하지 않기로 결정했습니다 (현재 VB8에서 구현 됨).
인용하려면 :
http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx
CLS는 개발자가 일반적으로 필요로하는 언어 구조를 포함 할 수있을만큼 충분히 크지 만 대부분의 언어에서 지원할 수있을만큼 충분히 작게 설계되었습니다. 또한 코드의 형식 안전성을 신속하게 확인할 수 없도록하는 모든 언어 구문은 CLS에서 제외되어 모든 CLS 호환 언어가 원하는 경우 확인 가능한 코드를 생성 할 수 있습니다.
업데이트 : 나는 몇 년 전에 이것에 대해 궁금해했고, 왜 UInt가 타입 안전성을 검증 할 수 없는지 알 수는 없지만 CLS 직원들은 기준선 최소값이 무엇인지 어딘가에 컷오프 지점이 있어야한다고 생각합니다. 지원되는 값 유형의 수. 또한 점점 더 많은 언어가 CLR로 포팅되는 장기적인 관점에서 생각할 때 개념이 전혀없는 경우 서명되지 않은 정수를 구현하여 CLS 규정을 준수해야하는 이유는 무엇입니까?
문제의 일부는 C의 부호없는 정수 유형이 숫자가 아닌 추상 대수 링의 구성원으로 동작해야한다는 사실을 중심으로합니다 [예를 들어, 부호없는 16 비트 정수 변수가 0 인 경우 , 감소가 필요합니다.65,535를 산출하고 65,535와 같으면 0을 산출해야합니다.] 그러한 행동이 매우 유용 할 때가 있습니다. 그러나 숫자 유형이 그러한 행동을 보이는 것은 일부 언어의 정신에 반하는 것일 수 있습니다. 나는 서명되지 않은 유형을 생략하기로 한 결정이 아마도 확인 된 숫자 컨텍스트와 확인되지 않은 숫자 컨텍스트를 모두 지원하기로 결정한 것보다 앞서 있다고 추측 할 것입니다. 개인적으로 저는 부호없는 숫자와 대수 고리에 대해 별도의 정수 유형이 있었으면합니다. 단항 빼기 연산자를 부호없는 32 비트 숫자에 적용하면 64 비트 부호있는 결과가 생성되지만 [0 이외의 값을 부정하면 음수가 생성됨] 링 유형에 단항 빼기 연산자를 적용하면 해당 링 내에서 역 가산 값이 생성됩니다.
어쨌든 부호없는 정수가 CLS 규격이 아닌 이유는 Microsoft가 언어가 "CLS 호환"으로 간주되기 위해 부호없는 정수를 지원할 필요가 없다고 결정했기 때문입니다.
Unsigned int는 실생활에서 그다지 많은 것을 얻지 못하지만 int 유형이 두 개 이상이면 고통을 주므로 많은 언어가 int 만 있습니다.
CLS 규격은 많은 언어에서 클래스를 사용할 수 있도록하는 것입니다.
아무도 당신을 CLS 규격으로 만들지 않습니다.
CLS 규격이 제한하는 공용 API 만 있기 때문에 메서드 내 에서 서명되지 않은 int를 계속 사용 하거나 개인 메서드 에 대한 매개 변수로 사용할 수 있습니다 .