2009-05-26 4 views
7

C# und VB.NET enthält integrierte 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 (statt dessen die System. * Structs/classes)?Eingebaute Typen, wenn (nicht) zu verwenden?

+0

Ich wählte Shawns Antwort, weil sie mir einen soliden Grund für die Wahl zwischen den beiden Optionen bietet.Andere Antwort nur angeben, "es ist gleich, verwenden Sie entweder" - das ist nicht wirklich hilfreich, IMO. Wenn ich die zweitbeste Antwort wählen kann, wäre es Reeds. Wie auch immer, da Leute sich beschweren, werde ich mehr Antworten kommen lassen ... –

Antwort

14

Die einzige Zeit, die ich jemals "System.XYZ"" anstelle eines integrierten Schlüsselworttyps verwenden würde, wenn ich einen Integer-Typ sehr spezifischer Größe brauche, und ich möchte, dass es jedem klar ist, der meinen Code liest (zB I könnte verwenden Int32 statt int wenn die ganze Zahl in Frage tatsächlich 4 8-Bit-Felder zusammengepackt ist.)

15

die Sprachtypen (zB string, int, char) ist einfach Aliases für die CLR-Typen (System.String, System .Int32, System.Char).

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

EDIT

Das Plakat für einige Hilfe gebeten zwischen den beiden in der Auswahl sehr gut.

persönlich I neigen dazu, die Sprache C# Typen (int, string, char usw.) zu wählen, weil sie weniger tippen beinhalten - Ich glaube, ich bin nur faul :)

+0

Mit anderen Worten. Sie sind genau das gleiche. Think: String s = "hi"; String s2 = s; s und s2 sind die gleiche Zeichenfolge. – jjnguy

+0

@jjnguy: Es geht nicht darum, dass die Werte von S & S2 gleich sind, ignoriere die Werte. Ich sage, dass die Typen, die die Werte (nicht die Werte) enthalten, identisch sind. d.h. Zeichenfolge s1 = "Hallo"; System.String s2 = "Welt"; s1 ist der gleiche TYPE wie s2, unabhängig davon, dass sich ihre Werte unterscheiden. –

37

ich immer fast die eingebauten verwenden in Aliasen wie int/short/long. Sie sind einfacher zu lesen und erfordern nicht, dass Sie System importieren oder System.Int32 überall eingeben usw.

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

Das gesagt - die eine Stelle, wo ich explizit Int32, Int16 usw. verwenden, ist, wenn ich binären Speicher oder Übertragung, insbesondere zu oder von einem benutzerdefinierten binären Format beschäftigen. In diesem Fall macht die explizite Bitgröße jedes Mitglieds, das in die Datei hinein- und herausgeht, den Code lesbarer und verständlicher, IMO.

2

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

5

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

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 eine Ganzzahl ohne Vorzeichen unterstützt.

Andere als diese Falten ... Ich würde empfehlen, welche Idiom mehr im Einklang mit Ihren Organisationen Code Praktiken ist. Wenn Sie Ihre Typreferenzen vollständig benennen, würde ich dieses Muster mit dem Namespace System. * Fortführen ... (Ich würde jedoch auch empfehlen, dies nicht zu tun, da es die Leselast ohne zusätzliche Klarheit erhöht).

+0

Und 6 Jahre später: Das StyleCop-Regelwerk sagt, benutze die eingebauten. –

Verwandte Themen