2013-04-22 7 views
43

So che sono lo stesso tipo di variabile, ma esiste uno "stile" standard accettato per l'utilizzo di long o Int64?Stile accettato per lungo vs Int64 in C#?

Vorrei utilizzare il più comune.

+3

Sicuramente lungo –

+0

check this out http://forums.asp.net/t/1278143.aspx/1 "Int64 = lungo Int32 = int Int16 = breve" – SchautDollar

+4

Come sempre, questo è un questione di preferenza. L'importante è essere coerenti in ciò che usi. Detto questo, credo che la maggior parte degli sviluppatori preferisca 'long' su' Int64'. – dtb

risposta

53

Tutta la documentazione di Microsoft e 99,999% (più o meno) del codice che troverete volontà in linea utilizzare long. Si veda ad esempio la definizione tipo di dati numerico in C# riferimento: http://msdn.microsoft.com/en-us/library/exx3b86w.aspx

Alla fine, questo è lo stesso problema con l'utilizzo string o String. In generale, i nomi minuscoli vengono utilizzati per tipi di dati valore come numeri o caratteri, mentre i nomi maiuscoli vengono utilizzati per le classi. In C# Int64 è il tipo di dati complesso (una struttura con campi, proprietà e metodi, vedere il documento here) per il tipo di dati valore long (consultare il documento here). In generale, le persone non utilizzano la classe Int64 per altri che richiamano metodi da quella classe, ad esempio Int64.Parse. Così è di solito trovare qualcosa di simile:

long variable = 9.5f; 
string text = "8.4"; 
long anotherVariable = Int64.Parse(text); 
+9

Puoi ugualmente scrivere 'long anotherVariable = long.Parse (text);' – dtb

+5

@dtb Lo so, lo so. Sto solo dicendo che cosa è più comune là fuori –

12

Otterrete così tante opinioni diverse per una domanda come questa poiché sono la stessa identica cosa. Quindi tocca a te. Microsoft praticamente usa sempre long, int e short nella loro documentazione ed esempi. È semplicemente un alias in VB.NET e C#. Quindi credo che sia meglio usarli per usarli in questo modo.

  • long invece di Int64
  • int invece di Int32
  • short invece di Int16
2

Credo che si tratta di chiarezza rispetto compatibilità. Int16, Int32 e Int64 sono più chiari di short, int e long. Sai solo guardando allo Int16 che è lungo 16 bit.

+7

Qualcuno che non sa a lungo è 64 bit ha problemi molto più grandi durante la lettura del codice rispetto a questo. – Filip

+0

Sono d'accordo con @Filip, se qualcuno non sa che breve è 16 bit, int è 32 bit, e lungo è 64 bit è incompetente o non è stato programmato in 20 anni. –

+5

@TheGreatCO: Questo non ha nulla a che fare con l'essere incompetenti o non avere programmi in un istante. C# non esiste da 20 anni e C/C++ ha definizioni molto diverse per questi tipi di dati. Quel che Filip allude è che l'equivalenza tra 'long' e' Int64' * in C# * sono principi di base * in C# *, quindi ci si può aspettare che questo sia un fatto noto - o il programmatore è in una fase molto iniziale di imparare C#. – dtb

0

Penso che nella maggior parte dei casi si tratterà di preferenze personali, ma se si sta parlando rigorosamente di "C#" senza specificare la piattaforma sottostante, ci penserei un po 'diversamente. Se si sta sviluppando per aderire agli standard C# per la portabilità attraverso le piattaforme e "a prova di futuro", "long" sarebbe il modo migliore di procedere poiché è un vero costrutto nella lingua stessa. "Int64" è una struttura reale (System.Int64) nel framework.

4

C# utilizza queste parole chiave come long, int string, come alias per i tipi .NET.

  • int = System.Int32
  • long = System.Int64
  • string = System.String

Il primo argomento ad utilizzare queste parole chiave è che si tratta con la lingua, in modo da utilizzare durante la scrittura della lingua.

Un secondo argomento dell'utilizzo di queste parole chiave è che non è necessario inserire using System; sopra il file di codice.

Un altro vantaggio potrebbe essere che qualcuno potrebbe creare un nuovo tipo chiamato Int64 e metterlo da qualche parte nel tuo spazio dei nomi (lo so ... sarebbe pazzesco). Se il tuo codice precedente utilizza il tipo Int64, il tuo vecchio codice potrebbe smettere di funzionare. Se il tuo vecchio codice utilizzava long (un alias per System.Int64), funzionerebbe ancora bene.

3

È necessario utilizzare long, int e short.

L'unica eccezione che conosco è in un nome di funzione; guarda a BitConverter.ToInt64.

Il motivo è quello che non è definito in CIL mentre int64 lo è.

+0

Per quanto riguarda i tipi di framework .NET e i metodi di denominazione, consultare il paragrafo finale di [questa risposta] (http://stackoverflow.com/a/215422/1497596) alla domanda [Qual è la differenza tra stringa e stringa?] (http://stackoverflow.com/q/7074/1497596). – DavidRR