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?Diese beiden Begriffe sind in der Tat synonym; int
wird ein wenig vertrauter aussehen, Int32
macht die 32-Bitigkeit für diejenigen, die Ihren Code lesen, deutlicher. Ich wäre geneigt, Folgendes zu verwenden int
wo ich nur 'eine ganze Zahl' brauche, Int32
wo die Größe wichtig ist (kryptographischer Code, Strukturen), so dass zukünftige Betreuer wissen, dass es sicher ist, eine int
wenn es angebracht ist, sollte aber darauf geachtet werden, dass Int32
s auf die gleiche Weise.
Der resultierende Code ist identisch: der Unterschied ist lediglich eine Frage der Lesbarkeit oder des Aussehens des Codes.
ECMA-334 :2006 Spezifikation der C#-Sprache (p18):
Jeder der vordefinierten Typen ist eine Kurzform für einen vom System bereitgestellten Typ. Zum Beispiel ist das Schlüsselwort
int
verweist auf die StrukturSystem.Int32
. Aus stilistischen Gründen wird die Verwendung des Schlüsselworts der Verwendung des vollständigen Systemtypnamens vorgezogen.
Beide deklarieren 32-Bit-Ganzzahlen, und wie bereits von anderen Postern erwähnt, ist es hauptsächlich eine Frage des syntaktischen Stils, welche man verwendet. Allerdings verhalten sie sich nicht immer auf die gleiche Weise. Zum Beispiel wird der C#-Compiler dies nicht zulassen:
public enum MyEnum : Int32
{
member1 = 0
}
aber es wird dies erlauben:
public enum MyEnum : int
{
member1 = 0
}
Stellen Sie sich das mal vor.
Ich verwende immer die Systemtypen - z. B., Int32
anstelle von int
. Ich habe diese Praxis übernommen, nachdem ich gelesen hatte Angewandte .NET Framework-Programmierung - gibt der Autor Jeffrey Richter gute Argumente für die Verwendung der vollständigen Typennamen. Hier sind die beiden Punkte, die bei mir hängen geblieben sind:
-
Typnamen können in verschiedenen .NET-Sprachen unterschiedlich sein. Zum Beispiel, in C#,
long
wird in C++ mit verwalteten Erweiterungen auf System.Int64 abgebildet,long
bildet auf Int32 ab. Da die Sprachen bei der Verwendung von .NET gemischt werden können, können Sie sicher sein, dass die Verwendung des expliziten Klassennamens immer klarer ist, unabhängig von der bevorzugten Sprache des Lesers. -
Viele Framework-Methoden haben Typnamen als Teil ihrer Methodennamen:
BinaryReader br = new BinaryReader( /* ... */ ); float val = br.ReadSingle(); // OK, but it looks a little odd... Single val = br.ReadSingle(); // OK, and is easier to read
Int ist ein C#-Schlüsselwort und ist eindeutig.
Die meiste Zeit spielt es keine Rolle, aber es gibt zwei Dinge, die gegen Int32 sprechen:
- Sie benötigen eine "using System;"-Anweisung. Die Verwendung von "int" erfordert keine using-Anweisung.
- Es ist möglich, eine eigene Klasse namens Int32 zu definieren (was albern und verwirrend wäre). int bedeutet immer int.
- See previous answers
- Weitere Antworten anzeigen