ulong (справочник по C#)
Обновлен: Ноябрь 2007
Ключевое слово ulong обозначает целочисленный тип, в котором хранятся значения, размер и диапазон которых приведены в следующей таблице.
Тип |
Диапазон |
Размер |
Тип платформы .NET Framework |
---|---|---|---|
ulong |
От 0 до 18 446 744 073 709 551 615 |
64-разрядное целое число без знака |
Литералы
Переменную типа ulong можно объявить и инициализировать, как показано в этом примере:
ulong uLong = 9223372036854775808;
Если целочисленный литерал не имеет суффикса, его тип — первый из этих типов, в котором может быть представлено его значение: int, uint, long, ulong. В приведенном выше примере таким типом является ulong.
Суффиксы можно также использовать для задания типа литерала в соответствии со следующими правилами:
Если используется L или l, то в зависимости от размера литерал будет иметь целочисленный тип long или ulong.
Примечание. Букву "l" в нижнем регистре можно использовать в качестве суффикса. Однако при этом выдается предупреждение компилятора, так как букву "l" легко перепутать с цифрой "1". Для ясности используйте "L".
Если используется U или u, то в зависимости от размера литерал будет иметь целочисленный тип uint или ulong.
Если используется UL, ul, Ul, uL, LU, lu, Lu или lU, то в зависимости от размера литерал будет иметь целочисленный тип ulong.
Например, результатом использования трех следующих операторов будет системный тип UInt64, соответствующий псевдониму ulong:
Console.WriteLine(9223372036854775808L.GetType()); Console.WriteLine(123UL.GetType()); Console.WriteLine((123UL + 456).GetType());
Обычно суффикс используется для вызова перегруженных методов. Рассмотрим, например, следующие перегруженные методы, в которых используются параметры типов ulong и int:
public static void SampleMethod(int i) {}
public static void SampleMethod(ulong l) {}
Использование суффикса с параметром ulong гарантирует вызов метода правильного типа, например:
SampleMethod(5); // Calling the method with the int parameter
SampleMethod(5UL); // Calling the method with the ulong parameter
Преобразования
Существует предопределенное неявное преобразование типа ulong в тип float, double или decimal.
Неявного преобразования типа ulong в любой целочисленный тип не существует. Например, следующий оператор вызывает ошибку компиляции без явного приведения:
long long1 = 8UL; // Error: no implicit conversion from ulong
Существует предопределенное неявное преобразование типа byte, ushort, uint или char в тип ulong.
Кроме того, неявного преобразования типов с плавающей запятой в тип ulong не существует. Например, следующая инструкция приводит к ошибке компилятора, если не выполнить явное приведение типов:
// Error -- no implicit conversion from double:
ulong x = 3.0;
// OK -- explicit conversion:
ulong y = (ulong)3.0;
Сведения об арифметических выражениях, в которых одновременно используются переменные типов с плавающей запятой и целочисленных типов, см. в разделе float и double.
Дополнительные сведения о правилах выполнения неявных числовых преобразований см. в разделе Таблица неявных числовых преобразований (Справочник по C#).
Спецификация языка C#
Дополнительные сведения см. в следующих разделах документа Спецификация языка C#:
1.3 Типы и переменные
4.1.5 Целочисленные типы
См. также
Основные понятия
Руководство по программированию в C#
Ссылки
Таблица целых типов (Справочник по C#)
Таблица встроенных типов (Справочник по C#)
Таблица неявных числовых преобразований (Справочник по C#)
Таблица явных числовых преобразований (справочник по C#)