Unter Numerische Typen in Kapitel 2 ( C # 5.0 in Kürze ) habe ich diesen Satz gefunden:
Warum int und long sind erstklassige Bürger und werden sowohl von C # als auch von der Laufzeit bevorzugt? und, warum die anderen Typen für die Interoperabilität verwendet werden?
Wegen der Art, wie moderne Prozessoren konstruiert werden. 32-Bit- und 64-Bit-Prozessoren sind speziell für die Verarbeitung von 32-Bit- und 64-Bit-Ganzzahlen optimiert. Dies nennt man Wort Größe :
Moderne Prozessoren, einschließlich eingebetteter Systeme, haben normalerweise eine Wortgröße von 8, 16, 24, 32 oder 64 Bits, während moderne Universalcomputer normalerweise 32 oder 64 Bits verwenden.
Dies bedeutet, dass ein Prozessor Arithmetik mit diesen Typen einfacher ausführen kann als die anderen Typen. A byte
oder short
werden, obwohl sie theoretisch weniger Speicher belegen, immer noch in 32-Bit- oder 64-Bit-Registern auf dem Prozessor geladen (abhängig von der Architektur).
int
und long
über uint
und ulong
ist völlig willkürlich . Es gibt keinen technischen Grund, warum vorzeichenlose Ganzzahlen schwerer zu unterlegen wären als Ganzzahlen mit Vorzeichen. Wenn überhaupt, wären signierte Ganzzahlen in Hardware schwieriger zu unterstützen.
Darüber hinaus ist "Kompatibilität" nicht einmal ein Grund, denn als .NET entworfen wurde, gab es nichts, um mit kompatibel zu bleiben!
So signierte Typen sind bevorzugt weil sie sich so anfühlen .
Sie hätten das CLS sehr gut so gestalten können, dass es vorzeichenlose Ganzzahlen enthält, und es hätte auch funktioniert.
Tags und Links .net c# clr int long-integer