Відповіді:
Не всі мови мають поняття безпідписаних літер. Наприклад, VB 6 не мав поняття безпідписаних вхідних даних, які, як я підозрюю, призвели до того, що розробники VB7 / 7.1 також не реалізували (це реалізовано зараз у VB8).
Цитувати:
http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx
CLS був розроблений таким чином, щоб бути достатньо великим, щоб включати мовні конструкції, які зазвичай потрібні розробникам, але досить малі, що більшість мов можуть його підтримувати. Крім того, будь-яка мовна конструкція, яка унеможливлює швидку перевірку безпеки типу коду, була виключена з CLS, щоб усі мови, сумісні з CLS, могли створювати код, що перевіряється, якщо вони вирішили це зробити.
Оновлення: мені було цікаво про це кілька років тому, і хоча я не можу зрозуміти, чому UInt не буде перевіряти безпеку, я думаю, хлопці CLS повинні були десь відрізати те, що буде базовим мінімумом кількість підтримуваних типів значень. Крім того, коли ви думаєте про більш тривалий термін, коли все більше мов переносяться до CLR, навіщо змушувати їх реалізовувати неподписані вставки, щоб отримати відповідність CLS, якщо ніколи не існує концепції?
Я підозрюю, що частина випуску обертається навколо того, що неподписані цілі типи в C повинні вести себе як члени абстрактного алгебраїчного кільця, а не як числа [це означає, наприклад, що якщо неподписана 16-бітна ціла цінна змінна дорівнює нулю , декрементуючи це потрібнащоб отримати 65535, а якщо вона дорівнює 65535, то при збільшенні потрібно отримати нуль.] Бувають випадки, коли така поведінка надзвичайно корисна, але числові типи виявляють, що така поведінка може йти проти духу деяких мов. Я б припустив, що рішення про опущення непідписаних типів, ймовірно, передує рішенню підтримки як перевірених, так і неперевірених числових контекстів. Особисто я хотів би, щоб існували окремі цілі типи для безпідписаних чисел та алгебраїчних кілець; застосування оператора унарного мінусу до непідписаного 32-розрядного числа повинно дати результат 64-розрядного підпису [заперечення нічого, крім нуля, дасть від'ємне число], але, застосувавши одинарний мінус до типу кільця, слід отримати додатково обернену добавку в межах цього кільця.
У будь-якому випадку, причина, що непідписані цілі числа не відповідають CLS, полягає в тому, що Microsoft вирішила, що мови не повинні підтримувати непідписані цілі числа, щоб вважати їх "сумісними з CLS".
Непідписаний int не так сильно заробляє вас у реальному житті, однак наявність більш ніж 1 типу int доставляє вам біль, тому багато мов співали лише ints.
Сумісна з CLS спрямована на те, щоб дозволити використовувати клас з багатьох мов ...
Пам’ятайте, що ніхто не робить вас сумісними з CLS.
Ви все ще можете використовувати неподписані вставки в межах методу або як parms до приватного методу, оскільки обмежує сумісність із CLS лише публічний API.
Ненаписані цілі числа не відповідають стандартам CLS, оскільки вони не сумісні між певними мовами.