Eingebaute Typen, wenn (nicht) zu verwenden?

7

C # und VB.NET enthält eingebaute Typen, die den CLR-Typen zugeordnet sind. Beispiele sind: int (C #) und Integer (VB) werden zu System.Int32, long (C #) und Long (VB) zu System.Int64 zugeordnet. Welche Best Practices sollten verwendet werden, um zu entscheiden, wann integrierte Typen verwendet oder nicht verwendet werden sollen (indem stattdessen die System. * Structs / classes verwendet werden)?

    
Adrian Godong 26.05.2009, 16:19
quelle

6 Antworten

37

Ich verwende fast immer die eingebauten Aliase wie int / short / long. Sie sind einfacher zu lesen und erfordern nicht das Importieren von System oder das Eingeben von System.Int32 überall usw.

Die Sprache definiert sie klar und gibt ihnen eine spezifische Bedeutung, so dass ich keinen Schaden sehe. Dies ist jedoch zu 100% eine persönliche Entscheidung.

Das heißt - der einzige Ort, an dem ich Int32, Int16 usw. explizit verwende, ist, wenn ich mit binärer Speicherung oder Übertragung arbeite, insbesondere mit einem benutzerdefinierten Binärformat. In diesem Fall macht die explizite Bitgröße jedes Mitglieds, das in die Datei ein- und ausgeht, den Code lesbarer und verständlicher, IMO.

    
Reed Copsey 26.05.2009 16:23
quelle
15

Die Sprachtypen (z. B. string, int, char) sind einfach Aliase für die CLR-Typen (System.String, System.Int32, System.Char).

Sie sind austauschbar, es besteht keine Notwendigkeit, eines vor dem anderen zu bevorzugen.

BEARBEITEN

Das Plakat bat um etwas Hilfe bei der Wahl zwischen den beiden, sehr gut.

Persönlich tendiere ich , die C # -Sprachentypen (int, string, char usw.) zu wählen, weil sie weniger Eingabe erfordern - ich nehme an, ich bin einfach faul:)

    
Binary Worrier 26.05.2009 16:23
quelle
14

Das einzige Mal, dass ich " System.XYZ" " gegenüber einem eingebauten Schlüsselwort explizit verwende, ist, wenn ich einen Integer-Typ mit sehr spezifischer Größe brauche, und ich möchte, dass jeder, der meinen Code liest (z Ich könnte Int32 anstelle von int verwenden, wenn es sich bei der fraglichen Ganzzahl tatsächlich um 4 zusammen gepackte 8-Bit-Felder handelt.)

    
mquander 26.05.2009 16:21
quelle
5

Ich verwende immer die System.* -Typen, weil sie zwischen anderen Klassen konsistenter aussehen - Großbuchstabe und die gleiche Syntax-Hervorhebung. Aber das ist nur eine persönliche Vorliebe und nur ein ästhetisches Problem.

    
Daniel Brückner 26.05.2009 16:43
quelle
2

"int" und "Int32" (und die anderen) sind genau gleich. Typisch sind die Schlüsselwörter (int, Integer (vb.net), bool, etc ...), weil es kürzer ist und in der IDE highlited ist.

    
TcKs 26.05.2009 16:28
quelle
1

Anstatt zu verwenden oder nicht die Sprachtypen im Vergleich zu expliziten BCL-Klassennamen zu verwenden, ist es wichtiger zu wissen, ob der Typ, den Sie verwenden möchten, CLS-kompatibel ist.

Insbesondere sind die vorzeichenlosen Integer-Typen nicht CLS-kompatibel, da keine Sprache unterstützt wird, die unsigned integer math. unterstützt.

Abgesehen von dieser Falte ... würde ich empfehlen, welches Idiom mehr mit den Praktiken Ihres Organisationscodes übereinstimmt. Wenn Sie Ihre Typreferenzen vollständig benennen, würde ich dieses Muster mit dem Namespace System. * Fortführen ... (Ich würde jedoch auch empfehlen, diese Vorgehensweise zu verwenden, da die Leselast ohne zusätzliche Klarheit zunimmt).

    
Tetsujin no Oni 26.05.2009 16:44
quelle

Tags und Links