long (справочник по C#)
Ключевое слово long обозначает целочисленный тип, в котором хранятся значения, размер и диапазон которых приведены в следующей таблице.
Type |
Диапазон |
Размер |
Тип платформы .NET Framework |
---|---|---|---|
long |
От –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
64-разрядное целое число со знаком |
Литералы
Переменную типа long можно объявить и инициализировать, как показано в этом примере:
long long1 = 4294967296;
Если целочисленный литерал не имеет суффикса, его тип — первый из этих типов, в котором может быть представлено его значение: int, uint, long, ulong. В предыдущем примере использовался тип long, так как значение выходит за пределы типа uint (сведения о размерах целочисленных типов при хранении см. в разделе Таблица целых типов (Справочник по C#)).
Можно также использовать суффикс L с типом long:
long long2 = 4294967296L;
При использовании суффикса L для литерала используется целочисленный тип long или ulong в зависимости от его размера. В данном случае используется long, так как значение меньше допустимого диапазона для типа ulong.
Обычно суффикс используется для вызова перегруженных методов. Рассмотрим, например, следующие перегруженные методы, в которых используются параметры типов long и int:
public static void SampleMethod(int i) {}
public static void SampleMethod(long l) {}
Использование суффикса L гарантирует вызов метода правильного типа, например:
SampleMethod(5); // Calling the method with the int parameter
SampleMethod(5L); // Calling the method with the long parameter
Тип long можно использовать в одном выражении с другими целочисленными типами, при этом выражение вычисляется, как имеющее тип long (или bool для реляционных или логических выражений). Например, следующее выражение вычисляется, как имеющее тип long:
898L + 88
Примечание
Кроме того, в качестве суффикса можно использовать букву "l" в нижнем регистре.Однако при этом выдается предупреждение компилятора, так как букву "l" легко перепутать с цифрой "1". Для ясности используйте "L".
Сведения об арифметических выражениях, в которых одновременно используются переменные типов с плавающей запятой и целочисленных типов, см. в разделе float и double.
Преобразования
Существует предопределенное неявное преобразование типа long в тип float, double или decimal. В противном случае необходимо использовать приведение. Например, следующий оператор вызывает ошибку компиляции без явного приведения:
int x = 8L; // Error: no implicit conversion from long to int
int x = (int)8L; // OK: explicit conversion to int
Существует предопределенное неявное преобразование типа sbyte, byte, short, ushort, int, uint или char в тип long.
Обратите внимание, что неявного преобразования типов с плавающей запятой в тип long не существует. Например, следующая инструкция приводит к ошибке компилятора, если не выполнить явное приведение типов:
long x = 3.0; // Error: no implicit conversion from double
long y = (long)3.0; // OK: explicit conversion
Спецификация языка C#
Дополнительные сведения см в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.
См. также
Ссылки
Таблица целых типов (Справочник по C#)
Таблица встроенных типов (Справочник по C#)
Таблица неявных числовых преобразований (Справочник по C#)
Таблица явных числовых преобразований (Справочник по C#)
Основные понятия
Руководство по программированию на C#