2009-05-26 15 views
7

C# e VB.NET sono dotati di tipi integrati che si associano ai tipi CLR. Gli esempi sono: int (C#) e Integer (VB) si associa alle mappe System.Int32, long (C#) e Long (VB) a System.Int64. Quali sono le migliori pratiche per decidere quando utilizzare i tipi incorporati o non usarli (usando invece il sistema. * Structs/classes)?Tipi incorporati, quando (non) utilizzare?

+0

Ho scelto la risposta di Shawn perché mi fornisce una solida base di scelta tra le due opzioni.Un'altra risposta è semplicemente "è uguale, usa entrambi" - questo non è molto utile, IMO. Se posso scegliere la seconda migliore risposta, sarebbe quella di Reed. In ogni caso, poiché le persone si lamentano, lascerò che arrivino altre risposte ... –

risposta

14

L'unica volta che utilizzerei esplicitamente "System.XYZ" in preferenza per una parola chiave di tipo built-in è quando ho bisogno di un tipo intero di dimensione molto specifica, e voglio che sia chiaro a chiunque legga il mio codice (ad es. potrebbe utilizzare Int32 invece di int se il numero intero in questione è in realtà 4 campi da 8 bit imballati in comune.)

15

i tipi di lingue (ad esempio string, int, char) sono semplicemente alias per i tipi CLR (System.String, sistema .Int32, System.Char).

Sono intercambiabili, non è necessario preferire uno rispetto all'altro

EDIT

Il poster chiesto un aiuto nella scelta tra i due, molto bene.

Personalmente tendo di scegliere i tipi di linguaggio C# (int, string, char ecc), perché coinvolgono meno di battitura - Credo di essere solo pigro :)

+0

In altre parole. Sono esattamente la stessa cosa. Pensa: String s = "hi"; Stringa s2 = s; s e s2 sono la stessa stringa. – jjnguy

+0

@jjnguy: Non si tratta dei valori di S & S2 uguali, ignorare i valori. Sto dicendo che i tipi che contengono i valori (non i valori) sono identici. cioè string s1 = "Ciao"; System.String s2 = "Mondo"; s1 è lo stesso TYPE di s2, indipendentemente dal fatto che i loro valori differiscano. –

37

ho quasi sempre usare l'incorporato in alias, come int/short/long. Sono più facili da leggere e non richiedono l'importazione del sistema o la digitazione di System.Int32 ovunque, ecc.

Il linguaggio li definisce chiaramente e dà loro un significato specifico, quindi non vedo alcun danno. Tuttavia, questo è al 100% una scelta personale.

Detto questo, l'unico posto in cui utilizzo esplicitamente Int32, Int16, ecc., È se si tratta di archiviazione binaria o trasferimento, in particolare verso o da un formato binario personalizzato. In questo caso, avere il bit esplicito di ciascun membro che entra e esce dal file rende il codice più leggibile e comprensibile, IMO.

2

Utilizzare "int" e "Int32" (e gli altri) sono esattamente gli stessi. Tipicamente vengono utilizzate le parole chiave (int, Integer (vb.net), bool, ecc ...), perché è più breve ed è highlited in IDE.

5

Uso sempre i tipi System.* perché sembrano più coerenti tra le altre classi: lettere maiuscole e la stessa evidenziazione della sintassi. Ma questa è solo una preferenza personale e solo un problema estetico.

1

Piuttosto che quando utilizzare o non utilizzare i tipi di lingua rispetto ai nomi di classi BCL espliciti, è più importante sapere se il tipo che si intende utilizzare è conforme a CLS.

In particolare, i tipi di numeri interi senza segno non sono conformi a CLS poiché non è richiesto che un linguaggio supporti la matematica dei numeri interi senza segno.

Diverso da questa ruga ... Vorrei raccomandare qualsiasi idioma sia più in linea con le pratiche del codice aziendale. Se il namespace è completo, i riferimenti continueranno con quello System. * Namespace ... (Suggerisco anche contro quella pratica, tuttavia, poiché aggiunge il carico del lettore senza un guadagno in termini di chiarezza).

+0

E 6 anni dopo: il set di regole StyleCop usa i builtin. –

Problemi correlati