В C # какого типа целочисленные литералы? - PullRequest
1 голос
/ 02 июня 2009

Я просто замечаю, что если я передам значение, такое как 1, в параметре функции, оно сработает, если оно превысит int, long и я приму остальные. Однако, если я делаю int i = значение, это не так. Мне было интересно, что это за тип?

Ответы [ 6 ]

4 голосов
/ 02 июня 2009

Посмотрите на спецификацию целочисленных литералов :

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

  • Если литерал не имеет суффикса, он имеет первый из этих типов, в котором его значение может быть представлено: int, uint, long, ulong.
  • Если к литералу добавляется суффикс U или u, он имеет первый из этих типов в котором его значение может быть представлено: uint, ulong.
  • Если литерал с суффиксом L или l, он имеет первый из этих типов в котором его значение может быть представлено: long, ulong.
  • Если к литералу добавлены суффиксы UL, Ul, uL, ul, LU, Lu, lU или lu, то имеет тип ulong.
4 голосов
/ 02 июня 2009
(1).GetType().ToString() //is System.Int32
3 голосов
/ 02 июня 2009

Вы можете использовать суффикс буквенных целых чисел, чтобы сделать тип явным, иначе значение будет неявно интерпретировано, как если бы оно было целевым типом (при условии, что оно не переполняет целевой объект).

var myLong = 123L;
var myInt = 123;
var myByte = (byte)123; // i'm not aware of a suffix for this one

// unsigned variants
var myULong = 123UL;
var myUInt = 123U;
0 голосов
/ 02 июня 2009

Целочисленные литералы равны int по умолчанию, но, поскольку существует неявное преобразование из int в long, вы все равно можете вызвать метод, который принимает long с int.

0 голосов
/ 02 июня 2009

Тип определяется.

Если у вас есть эта функция:

public void SomeFunc( long i );

и вы называете это так:

SomeFunc (1);

Тогда C # будет видеть это «1» как длинное.

0 голосов
/ 02 июня 2009

Насколько я понимаю, компилятор будет использовать подсказки типов для определения типа литерала во время компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...