2012-10-19 12 views
10

Eventuali duplicati:
C# short/long/int literal format?Quale tipo int ha come valore predefinito var?

Reading up sull'uso di var nella programmazione, io sono curioso di sapere cosa var default quando viene utilizzato per un tipo di int. Per esempio, se io uso

var foo = 65535

sarà il tipo di essere ushort o solo int? Grazie.

+5

È probabilmente Int32, visto che è una specie di standard. Perché non lo scopri? 'var num = 65535; Console.Write (num.GetType(). Name) ' – KChaloux

risposta

28

Davvero, quello che stai chiedendo è Che tipo è dato a letterali interi in C#?, per cui la risposta può essere trovata nella specifica:

(sezione 2.4.4.2 della specifica 4,0)

Il tipo di un intero letterale è determinata come segue:

  • Se il letterale non ha suffisso, ha il primo di questi tipi in cui il suo valore può essere rappresentato: int, uint, long, ulong.
  • Se il letterale è suffisso da U ou, ha il primo di questi tipi in cui il suo valore può essere rappresentato: uint, ulong.
  • Se il letterale è suffisso da L o l, ha il primo di questi tipi in cui il suo valore può essere rappresentato: lungo, molto lungo.
  • Se il letterale è suffisso da UL, Ul, uL, ul, LU, Lu, lU o lu, è di tipo ulong.

Se il valore rappresentato da un numero intero letterale non rientra nell'intervallo di tipo ulong, si verifica un errore di compilazione.

+0

Grazie. La tua risposta è stata molto descrittiva e utile. – MyCodeSucks

6

Tutti letterali interi sono di tipo int, quindi la variabile sarà int meno che non si lanci o aggiungere un qualificatore di tipo esplicito alla fine:

var quick = 65535;   // int 
var brown = (ushort)65535; // ushort 
var fox = 65535L;   // long 
+0

Grazie. La tua risposta è stata molto utile. – MyCodeSucks

+1

'unsigned' non funziona in C#. Penso che tu intendessi usare 'ushort'. – svick

Problemi correlati