ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# ulong(C# 参考) **ulong** 关键字表示一种整型,该类型根据下表显示的大小和范围存储值。 | 类型 | 范围 | 大小 | .NET Framework 类型 | | --- | --- | --- | --- | | **ulong** | 0 到 18,446,744,073,709,551,615 | 无符号 64 位整数 | [System.UInt64](https://msdn.microsoft.com/zh-CN/library/system.uint64.aspx) | ## 文本 可如下例所示声明并初始化 **ulong** 类型的变量: ``` ulong uLong = 9223372036854775808; ``` 如果整数没有后缀,则其类型为以下类型中可表示其值的第一个类型:[int](https://msdn.microsoft.com/zh-CN/library/5kzh1b5w.aspx)、[uint](https://msdn.microsoft.com/zh-CN/library/x0sksh43.aspx)、[long](https://msdn.microsoft.com/zh-CN/library/ctetwysk.aspx)、**ulong**。在上面的示例中,它是 **ulong** 类型。 还可根据以下规则使用后缀指定文字类型: * 如果使用 L 或 l,那么根据整数的大小,可以判断出其类型为 [long](https://msdn.microsoft.com/zh-CN/library/ctetwysk.aspx) 还是 **ulong**。 | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 注意也可用小写字母“l”作后缀。但是,因为字母“l”容易与数字“1”混淆,会生成编译器警告。为清楚起见,请使用“L”。 | * 如果使用 U 或 u,那么根据整数的大小,可以判断出其类型为 [uint](https://msdn.microsoft.com/zh-CN/library/x0sksh43.aspx) 还是 **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](https://msdn.microsoft.com/zh-CN/library/5kzh1b5w.aspx) 参数的重载方法为例: ``` 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](https://msdn.microsoft.com/zh-CN/library/b1e65aza.aspx)、[double](https://msdn.microsoft.com/zh-CN/library/678hzkk9.aspx) 或 [decimal](https://msdn.microsoft.com/zh-CN/library/364x0z75.aspx) 的预定义隐式转换。 不存在从 **ulong** 到任何整型的隐式转换。例如,不使用显式类型转换时,下列语句将产生编译错误: ``` long long1 = 8UL; // Error: no implicit conversion from ulong ``` 存在从 [byte](https://msdn.microsoft.com/zh-CN/library/5bdb6693.aspx)、[ushort](https://msdn.microsoft.com/zh-CN/library/cbf1574z.aspx)、[uint](https://msdn.microsoft.com/zh-CN/library/x0sksh43.aspx) 或 [char](https://msdn.microsoft.com/zh-CN/library/x9h8tsay.aspx) 到 **ulong** 的预定义隐式转换。 同样,不存在从浮点型到 **ulong** 类型的隐式转换。例如,除非使用显式强制转换,否则以下语句将生成一个编译器错误: ``` // Error -- no implicit conversion from double: ulong x = 3.0; // OK -- explicit conversion: ulong y = (ulong)3.0; ``` 有关兼用浮点型和整型的算术表达式的信息,请参见 [float](https://msdn.microsoft.com/zh-CN/library/b1e65aza.aspx) 和 [double](https://msdn.microsoft.com/zh-CN/library/678hzkk9.aspx)。 有关隐式数值转换规则的更多信息,请参见 [隐式数值转换表(C# 参考)](https://msdn.microsoft.com/zh-CN/library/y5b434w4.aspx)。 ## C# 语言规范 有关详细信息,请参阅 [C# 语言规范](https://msdn.microsoft.com/zh-CN/library/ms228593.aspx)。该语言规范是 C# 语法和用法的权威资料。 ## 请参阅 [UInt64](https://msdn.microsoft.com/zh-CN/library/system.uint64.aspx) [C# 参考](https://msdn.microsoft.com/zh-CN/library/618ayhy6.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) [C# 关键字](https://msdn.microsoft.com/zh-CN/library/x53a06bb.aspx) [整型表(C# 参考)](https://msdn.microsoft.com/zh-CN/library/exx3b86w.aspx) [内置类型表(C# 参考)](https://msdn.microsoft.com/zh-CN/library/ya5y69ds.aspx) [隐式数值转换表(C# 参考)](https://msdn.microsoft.com/zh-CN/library/y5b434w4.aspx) [显式数值转换表(C# 参考)](https://msdn.microsoft.com/zh-CN/library/yht2cx7b.aspx)