Какой тип int имеет значение по умолчанию?

Возможный дубликат:
С# short/long/int literal format?

Чтение по использованию var в программировании, мне любопытно, что var по умолчанию использует, когда он используется для int. Например, если я использую

var foo = 65535

будет ли тип ushort или просто int? Спасибо.

Ответ 1

Действительно, то, что вы просите, Какой тип задан для целочисленных литералов в С#?, на который можно найти ответ в спецификации:

(раздел 2.4.4.2 спецификации 4.0)

Тип целочисленного литерала определяется следующим образом:

  • Если литерал не имеет суффикса, он имеет первый из этих типов, в котором его значение может быть представлено: int, uint, long, ulong.
  • Если литерал суффикс U или u, он имеет первый из этих типов, в котором его значение может быть представлено: uint, ulong.
  • Если литерал суффикс L или l, он имеет первый из этих типов, в котором его значение может быть представлено: long, ulong.
  • Если литерал суффикс UL, Ul, uL, ul, LU, Lu, lU или lu, он имеет тип ulong.

Если значение, представленное целым литералом, выходит за пределы диапазона тип ulong, возникает ошибка времени компиляции.

Ответ 2

Все целые литералы имеют тип int, поэтому ваша переменная будет int, если вы не добавите или не добавите явный тип классификатора в конце:

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