Yanıtlar:
Tüm dillerde imzasız giriş kavramı yoktur. Örneğin, VB 6'nın imzalanmamış ints kavramı yoktu, sanıyorum ki VB7 / 7.1 tasarımcılarının da uygulamama kararına neden oldu (şimdi VB8'de uygulandı).
Alıntılamak:
http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx
CLS, geliştiriciler tarafından yaygın olarak ihtiyaç duyulan dil yapılarını içerecek kadar büyük, ancak çoğu dilin destekleyebileceği kadar küçük olacak şekilde tasarlanmıştır. Ek olarak, kodun tür güvenliğini hızlı bir şekilde doğrulamayı imkansız kılan herhangi bir dil yapısı, CLS'nin dışında tutulmuştur, böylece tüm CLS uyumlu diller, bunu seçerlerse doğrulanabilir kod üretebilirler.
Güncelleme: Birkaç yıl önce bunu merak etmiştim ve bir UInt'in neden tip güvenliğinin doğrulanabilir olmadığını anlayamasam da, sanırım CLS görevlilerinin minimum temel değerin ne olacağına dair bir kesme noktasına sahip olmaları gerekiyordu. desteklenen değer türlerinin sayısı. Ayrıca, gittikçe daha fazla dilin CLR'ye taşındığı daha uzun vadeyi düşündüğünüzde, kesinlikle hiçbir kavram yoksa, neden onları CLS uyumluluğu elde etmek için imzasız ints uygulamaya zorlayasınız ki?
Sanırım sorunun bir kısmı, C'deki işaretsiz tam sayı türlerinin sayılar yerine soyut bir cebirsel halkanın üyeleri gibi davranması gerektiği gerçeği etrafında dönüyor [yani, işaretsiz 16 bitlik bir tam sayı değişkeni sıfıra eşitse , azaltmak gerekli65,535 vermek ve 65,535'e eşitse, sıfır vermek için artırılması gerekir.] Bu tür davranışların son derece yararlı olduğu zamanlar vardır, ancak sayısal türler bu tür davranışlar sergilerken bazı dillerin ruhuna aykırı olabilir. İmzasız türleri ihmal etme kararının muhtemelen hem işaretli hem de denetlenmemiş sayısal bağlamları destekleme kararından önce geldiğini tahmin ediyorum. Şahsen, işaretsiz sayılar ve cebirsel halkalar için ayrı tam sayı türleri olsaydı; işaretsiz 32 bitlik sayıya bir tekli eksi operatör uygulamak 64 bitlik işaretli bir sonuç vermelidir [sıfırdan başka herhangi bir şeyin olumsuzlanması negatif bir sayı verir], ancak bir halka türüne bir tekli eksi uygulamak o halka içindeki toplamanın tersini vermelidir.
Her halükarda, işaretsiz tam sayıların CLS uyumlu olmamasının nedeni, Microsoft'un "CLS uyumlu" olarak kabul edilebilmesi için dillerin işaretsiz tam sayıları desteklemesi gerekmediğine karar vermesidir.
İmzasız int'ler gerçek hayatta size çok fazla kazandırmaz, ancak birden fazla int türüne sahip olmak size acı verir, bu nedenle birçok dilde yalnızca ints söylenir.
CLS uyumlu, bir sınıfın birçok dilden kullanılmasına izin vermeyi amaçlamaktadır ...
Kimsenin sizi CLS uyumlu yapmadığını unutmayın.
CLS uyumlu yalnızca genel API olduğundan , bir yöntem içinde veya özel bir yöntemin parametresi olarak işaretsiz girişleri kullanmaya devam edebilirsiniz .
İşaretsiz tamsayılar, belirli diller arasında birlikte çalışamadıkları için CLS uyumlu değildir.