In C#, int
y Int32
sind das Gleiche, aber ich habe schon mehrmals gelesen, dass int
ist vorzuziehen gegenüber Int32
ohne Angabe von Gründen. Gibt es einen Grund, und sollte mich das interessieren?
Antworten
Zu viele Anzeigen?Ich verwende int für den Fall, dass Microsoft die Standardimplementierung für eine ganze Zahl in eine neuartige Version (nennen wir sie Int32b) ändert.
Microsoft kann dann den int-Alias in Int32b ändern, und ich muss nichts an meinem Code ändern, um die Vorteile ihrer neuen (und hoffentlich verbesserten) Integer-Implementierung zu nutzen.
Dasselbe gilt für alle Schlüsselwörter des Typs.
int
ist ein Alias für System.Int32
wie in dieser Tabelle definiert: Tabelle der eingebauten Typen (C#-Referenz)
Laut dem Immediate Window in Visual Studio 2012 ist Int32 int, Int64 ist long. Hier ist die Ausgabe:
sizeof(int)
4
sizeof(Int32)
4
sizeof(Int64)
8
Int32
int
base {System.ValueType}: System.ValueType
MaxValue: 2147483647
MinValue: -2147483648
Int64
long
base {System.ValueType}: System.ValueType
MaxValue: 9223372036854775807
MinValue: -9223372036854775808
int
int
base {System.ValueType}: System.ValueType
MaxValue: 2147483647
MinValue: -2147483648
Das spielt keine Rolle. int ist das Schlüsselwort der Sprache und Int32 der eigentliche Systemtyp.
Siehe auch meine hier antworten zu einer verwandten Frage.
Einige Compiler haben unterschiedliche Größen für int auf verschiedenen Plattformen (nicht C#-spezifisch)
Einige Kodierungsstandards (MISRA C) verlangen, dass alle verwendeten Typen in der Größe angegeben werden (d.h. Int32 und nicht int).
Es ist auch sinnvoll, Präfixe für Variablen unterschiedlichen Typs anzugeben (z. B. b für 8-Bit-Byte, w für 16-Bit-Wort und l für 32-Bit-Langwort => Int32 lMyVariable)
Sie sollten sich darum kümmern, weil Ihr Code dadurch portabler und besser wartbar wird.
Portable ist möglicherweise nicht auf C# anwendbar, wenn Sie immer C# verwenden werden und die C#-Spezifikation sich in dieser Hinsicht nie ändern wird.
Maintainable ihmo wird immer anwendbar sein, weil die Person, die Ihren Code pflegt, diese spezielle C#-Spezifikation möglicherweise nicht kennt und einen Fehler übersieht, bei dem der int gelegentlich mehr als 2147483647 wird.
In einer einfachen for-Schleife, die z. B. die Monate des Jahres zählt, ist das egal, aber wenn Sie die Variable in einem Kontext verwenden, in dem sie möglicherweise überlaufen könnte, sollten Sie darauf achten.
Sie sollten auch darauf achten, ob Sie bitweise Operationen damit durchführen wollen.