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?Obwohl sie (größtenteils) identisch sind (siehe unten für den einen [Fehler] Unterschied), sollten Sie auf jeden Fall darauf achten und Int32 verwenden.
-
Der Name für eine 16-Bit-Ganzzahl ist Int16. Für eine 64-Bit-Ganzzahl heißt es Int64, und für eine 32-Bit-Ganzzahl lautet die intuitive Wahl: int oder Int32?
-
Die Frage nach der Größe einer Variablen des Typs Int16, Int32 oder Int64 ist selbstreferenzierend, aber die Frage nach der Größe einer Variablen des Typs int ist eine völlig berechtigte Frage, und Fragen, egal wie trivial sie sind, lenken ab, führen zu Verwirrung, verschwenden Zeit, behindern die Diskussion usw. (die Tatsache, dass es diese Frage gibt, beweist den Punkt).
-
Die Verwendung von Int32 zeigt, dass sich der Entwickler seiner Wahl des Typs bewusst ist. Wie groß ist ein int noch mal? Ach ja, 32. Die Wahrscheinlichkeit, dass die Größe des Typs tatsächlich in Betracht gezogen wird, ist größer, wenn die Größe im Namen enthalten ist. Die Verwendung von Int32 fördert auch das Wissen um die anderen Möglichkeiten. Wenn die Leute nicht dazu gezwungen werden, zumindest zu erkennen, dass es Alternativen gibt, wird es viel zu leicht, dass int "DER Integer-Typ" wird.
-
Die Klasse innerhalb des Frameworks, die für die Interaktion mit 32-Bit-Ganzzahlen vorgesehen ist, heißt Int32. Noch einmal, was ist: intuitiver, weniger verwirrend, keine (unnötige) Übersetzung (keine Übersetzung im System, sondern im Kopf des Entwicklers), usw.
int lMax = Int32.MaxValue
oInt32 lMax = Int32.MaxValue
? -
int ist nicht in allen .NET-Sprachen ein Schlüsselwort.
-
Obwohl es Argumente gibt, warum sich dies wahrscheinlich nie ändern wird, muss int nicht immer ein Int32 sein.
Die Nachteile sind zwei zusätzliche Zeichen, die eingegeben werden müssen, und [bug].
Das lässt sich nicht kompilieren
public enum MyEnum : Int32
{
AEnum = 0
}
Aber das wird es:
public enum MyEnum : int
{
AEnum = 0
}
Das sollte Ihnen egal sein. Sie sollten verwenden int
die meiste Zeit. Es wird die Portierung Ihres Programms auf eine breitere Architektur in der Zukunft erleichtern (derzeit int
ist ein Alias für System.Int32
aber das könnte sich ändern). Nur wenn die Bitbreite der Variablen von Bedeutung ist (z. B. zur Steuerung des Layouts im Speicher einer struct
) sollten Sie verwenden int32
und andere (mit dem zugehörigen " using System;
").
Früher war der Datentyp int an die Registergröße der vom Compiler anvisierten Maschine gekoppelt. So würde beispielsweise ein Compiler für ein 16-Bit-System eine 16-Bit-Ganzzahl verwenden.
Allerdings sehen wir zum Glück nicht mehr viel 16-Bit, und als 64-Bit populär wurde, waren die Leute mehr damit beschäftigt, es mit älterer Software kompatibel zu machen, und 32-Bit gab es schon so lange, dass für die meisten Compiler ein int wird einfach als 32 Bit angenommen.
Int ist die Abkürzung der Sprache C# für System.Int32
Dies bedeutet zwar, dass Microsoft diese Zuordnung ändern könnte, aber in einem Diskussionsbeitrag von FogCreek heißt es [Quelle]
"Was das 64-Bit-Problem angeht - Microsoft arbeitet tatsächlich an einer 64-Bit-Version des .NET Framework, aber ich bin mir ziemlich sicher, dass int auf diesem System NICHT auf 64 Bit abgebildet wird.
Die Gründe:
1. Der C# ECMA-Standard besagt ausdrücklich, dass int 32 Bit und long 64 Bit sind.
2. Microsoft hat in Framework Version 1.1 zusätzliche Eigenschaften und Methoden eingeführt, die Long-Werte anstelle von Int-Werten zurückgeben, wie Array.GetLongLength zusätzlich zu Array.GetLength.
Daher denke ich, dass man mit Sicherheit sagen kann, dass alle eingebauten C#-Typen ihr aktuelles Mapping behalten werden."