本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

Int64 结构

 

表示 64 位有符号整数。

命名空间:   System
程序集:  mscorlib(位于 mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public struct Int64 : IComparable, IFormattable, IConvertible, 
	IComparable<long>, IEquatable<long>

名称说明
System_CAPS_pubmethodCompareTo(Int64)

将此实例与指定的 64 位有符号整数进行比较并返回对其相对值的指示。

System_CAPS_pubmethodCompareTo(Object)

将此实例与指定对象进行比较并返回一个对二者的相对值的指示。

System_CAPS_pubmethodEquals(Int64)

返回一个值,该值指示此实例是否等于指定的 Int64 值。

System_CAPS_pubmethodEquals(Object)

返回一个值,该值指示此实例是否等于指定的对象。(覆盖 ValueType.Equals(Object)。)

System_CAPS_pubmethodGetHashCode()

返回此实例的哈希代码。(覆盖 ValueType.GetHashCode()。)

System_CAPS_pubmethodGetType()

获取当前实例的 Type(继承自 Object。)

System_CAPS_pubmethodGetTypeCode()

返回值类型 TypeCodeInt64

System_CAPS_pubmethodSystem_CAPS_staticParse(String)

将数字的字符串表示形式转换为它的等效 64 位有符号整数。

System_CAPS_pubmethodSystem_CAPS_staticParse(String, IFormatProvider)

将指定的区域性特定格式的数字的字符串表示形式转换为它的等效 64 位有符号整数。

System_CAPS_pubmethodSystem_CAPS_staticParse(String, NumberStyles)

将指定样式的数字的字符串表示形式转换为它的等效 64 位有符号整数。

System_CAPS_pubmethodSystem_CAPS_staticParse(String, NumberStyles, IFormatProvider)

将指定样式和区域性特定格式的数字的字符串表示形式转换为它的等效 64 位有符号整数。

System_CAPS_pubmethodToString()

将此实例的数值转换为其等效的字符串表示形式。(覆盖 ValueType.ToString()。)

System_CAPS_pubmethodToString(IFormatProvider)

使用指定的区域性特定格式信息,将此实例的数值转换为它的等效字符串表示形式。

System_CAPS_pubmethodToString(String)

使用指定的格式,将此实例的数值转换为它的等效字符串表示形式。

System_CAPS_pubmethodToString(String, IFormatProvider)

使用指定的格式和区域性特定格式信息,将此实例的数值转换为它的等效字符串表示形式。

System_CAPS_pubmethodSystem_CAPS_staticTryParse(String, Int64)

将数字的字符串表示形式转换为它的等效 64 位有符号整数。 一个指示转换是否成功的返回值。

System_CAPS_pubmethodSystem_CAPS_staticTryParse(String, NumberStyles, IFormatProvider, Int64)

将指定样式和区域性特定格式的数字的字符串表示形式转换为它的等效 64 位有符号整数。 一个指示转换是否成功的返回值。

名称说明
System_CAPS_pubfieldSystem_CAPS_staticMaxValue

表示 Int64 的最大可能值。 此字段为常数。

System_CAPS_pubfieldSystem_CAPS_staticMinValue

表示 Int64 的最小可能值。 此字段为常数。

名称说明
System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToBoolean(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToBoolean

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToByte(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToByte

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToChar(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToChar

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToDateTime(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 不支持此转换。 尝试使用此方法将引发 InvalidCastException

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToDecimal(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToDecimal

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToDouble(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToDouble

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToInt16(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToInt16

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToInt32(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToInt32

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToInt64(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToInt64

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToSByte(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToSByte

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToSingle(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToSingle

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToType(Type, IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToType

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToUInt16(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToUInt16

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToUInt32(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToUInt32

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToUInt64(IFormatProvider)

此 API 支持 产品 基础结构,不应从代码直接使用。 有关此成员的说明,请参阅 IConvertible.ToUInt64

System_CAPS_note说明

若要查看此类型的.NET Framework 源代码,请参阅 Reference Source 您可以浏览源代码、 下载脱机查看参考资料和调试; 在逐句通过源 (包括修补程序和更新)see instructions.

Int64 是表示不可变的值类型的有符号整数值范围从负的 9223372036854775808 (这由 Int64.MinValue 常量) 通过正的 9223372036854775807 (这由 Int64.MaxValue 常量。 .NET Framework 还包括 64 位无符号的整数值类型, UInt64, ,它表示从 0 到 18446744073709551615 之间的值。

您可以实例化 Int64 以下几种方式的值︰

  • 您可以声明 Int64 变量并将其分配的范围内的文本整数值 Int64 数据类型。 下面的示例声明了两个 Int64 变量并将它们分配这种方式中的值。

    long number1 = -64301728;
    long number2 = 255486129307;
    
  • 您可以将其范围是子集的整数类型的值分配的 Int64 类型。 这是不需要强制转换运算符在 C# 或 Visual Basic 中的转换方法的扩大转换。

    sbyte value1 = 124;
    short value2 = 1618;
    int value3 = Int32.MaxValue;
    
    long number1 = value1;
    long number2 = value2;
    long number3 = value3;
    
  • 你可以分配的范围超过为数值类型值的 Int64 类型。 这是收缩转换,因此它需要强制转换运算符在 C# 和 Visual Basic 中的转换方法是在 OptionStrict 上。 如果数值为 Single, ,Double, ,或 Decimal 包括小数部分,其小数部分处理的值取决于编译器执行转换。 下面的示例执行收缩转换,将分配到几个数值 Int64 变量。

    ulong ulNumber = 163245617943825;
    try {
       long number1 = (long) ulNumber;
       Console.WriteLine(number1);
    }
    catch (OverflowException) {
       Console.WriteLine("{0} is out of range of an Int64.", ulNumber);
    }
    
    double dbl2 = 35901.997;
    try {
       long number2 = (long) dbl2;
       Console.WriteLine(number2);
    }   
    catch (OverflowException) {
       Console.WriteLine("{0} is out of range of an Int64.", dbl2);
    }
    
    BigInteger bigNumber = (BigInteger) 1.63201978555e30;
    try {
       long number3 = (long) bigNumber;
       Console.WriteLine(number3);
    }
    catch (OverflowException) {
       Console.WriteLine("{0} is out of range of an Int64.", bigNumber);
    }    
    // The example displays the following output:
    //    163245617943825
    //    35902
    //    1,632,019,785,549,999,969,612,091,883,520 is out of range of an Int64.
    
  • 您可以调用的方法 Convert 类能够将任何受支持的类型设置为 Int64 值。 这可能是因为 Int64 支持 IConvertible 接口。 下面的示例演示数组的转换 Decimal 值复制到 Int64 值。

    decimal[] values= { Decimal.MinValue, -1034.23m, -12m, 0m, 147m,
                        199.55m, 9214.16m, Decimal.MaxValue };
    long result;
    
    foreach (decimal value in values)
    {
       try {
          result = Convert.ToInt64(value);
          Console.WriteLine("Converted the {0} value '{1}' to the {2} value {3}.",
                            value.GetType().Name, value,
                            result.GetType().Name, result);
       }
       catch (OverflowException) {
          Console.WriteLine("{0} is outside the range of the Int64 type.",
                            value);
       }   
    }                                  
    // The example displays the following output:
    //    -79228162514264337593543950335 is outside the range of the Int64 type.
    //    Converted the Decimal value '-1034.23' to the Int64 value -1034.
    //    Converted the Decimal value '-12' to the Int64 value -12.
    //    Converted the Decimal value '0' to the Int64 value 0.
    //    Converted the Decimal value '147' to the Int64 value 147.
    //    Converted the Decimal value '199.55' to the Int64 value 200.
    //    Converted the Decimal value '9214.16' to the Int64 value 9214.
    //    79228162514264337593543950335 is outside the range of the Int64 type.
    
  • 您可以调用 ParseTryParse 方法将转换的字符串表示形式 Int64 值赋给 Int64 该字符串可包含十进制或十六进制数字。 下面的示例说明了通过使用十进制和十六进制字符串的分析操作。

    string string1 = "244681903147";
    try {
       long number1 = Int64.Parse(string1);
       Console.WriteLine(number1);
    }
    catch (OverflowException) {
       Console.WriteLine("'{0}' is out of range of a 64-bit integer.", string1);
    }
    catch (FormatException) {
       Console.WriteLine("The format of '{0}' is invalid.", string1);
    }
    
    string string2 = "F9A3CFF0A";
    try {
       long number2 = Int64.Parse(string2,
                                  System.Globalization.NumberStyles.HexNumber);
       Console.WriteLine(number2);
    }
    catch (OverflowException) {
       Console.WriteLine("'{0}' is out of range of a 64-bit integer.", string2);
    }
    catch (FormatException) {
       Console.WriteLine("The format of '{0}' is invalid.", string2);
    }
    // The example displays the following output:
    //    244681903147
    //    67012198154
    

Int64 类型支持标准的数学运算,例如加法、 减法、 除法、 乘法、 求反、 和一元求反。 像其他整数类型, Int64 类型还支持按位 AND, ,OR, ,XOR, ,左移位和右移位运算符。

可以使用标准数字运算符来比较两个 Int64 值,也可以调用 CompareToEquals 方法。

您还可以调用的成员 Math 类来执行各种数值操作,包括获取数字的绝对值的数值、 计算商和整数除法运算的余数,确定两个长整数的最大值或最小值、 获取数字的符号和舍入数字。

Int64 类型提供对标准和自定义数字格式字符串的完全支持。 (有关详细信息,请参阅 .NET Framework 中的格式化类型, ,标准数字格式字符串, ,和 自定义数字格式字符串。)

若要设置格式 Int64 值为不带前导零的整数字符串,您可以调用无参数 ToString() 方法。 通过使用"D"格式说明符,还可以包括指定的数目的字符串表示形式中的前导零。 通过使用"N"格式说明符,可以包含组分隔符,并指定的十进制位数,才会出现在数字字符串表示形式。 您可以通过使用"X"格式说明符,来表示 Int64 值作为十六进制字符串。 下面的示例在一个数组中的元素进行格式设置 Int64 以下四种方式中的值。

long[] numbers = { -1403, 0, 169, 1483104 };
foreach (var number in numbers) {
   // Display value using default formatting.
   Console.Write("{0,-8}  -->   ", number.ToString());
   // Display value with 3 digits and leading zeros.
   Console.Write("{0,8:D3}", number);
   // Display value with 1 decimal digit.
   Console.Write("{0,13:N1}", number);
   // Display value as hexadecimal.
   Console.Write("{0,18:X2}", number);
   // Display value with eight hexadecimal digits.
   Console.WriteLine("{0,18:X8}", number);
}   
// The example displays the following output:
//    -1403     -->      -1403     -1,403.0  FFFFFFFFFFFFFA85  FFFFFFFFFFFFFA85
//    0         -->        000          0.0                00          00000000
//    169       -->        169        169.0                A9          000000A9
//    1483104   -->    1483104  1,483,104.0            16A160          0016A160

也可以格式化 Int64 通过调用十进制或十六进制字符串值作为二进制、 八进制 ToString(Int64, Int32) 方法,并提供基作为该方法的第二个参数。 下面的示例调用此方法以显示二进制、 八进制和十六进制形式表示的整数值的数组。

long[] numbers = { -146, 11043, 2781913 };
foreach (var number in numbers) {
   Console.WriteLine("{0} (Base 10):", number);
   Console.WriteLine("   Binary:  {0}", Convert.ToString(number, 2));
   Console.WriteLine("   Octal:   {0}", Convert.ToString(number, 8));
   Console.WriteLine("   Hex:     {0}\n", Convert.ToString(number, 16));
}
// The example displays the following output:
//    -146 (Base 10):
//       Binary:  1111111111111111111111111111111111111111111111111111111101101110
//       Octal:   1777777777777777777556
//       Hex:     ffffffffffffff6e
//
//    11043 (Base 10):
//       Binary:  10101100100011
//       Octal:   25443
//       Hex:     2b23
//
//    2781913 (Base 10):
//       Binary:  1010100111001011011001
//       Octal:   12471331
//       Hex:     2a72d9

除了处理作为十进制值单个长整数,您可能想要执行按位运算替换为长整型值,或使用二进制或十六进制值的表示形式的长整型。 Int64 值以 63 位,/64 位用作符号位为单位表示。 正值均通过使用符号数值表示法表示。 负值都以 2 的补数表示。 这一点上执行按位运算时,需要注意 Int64 值或当您处理的单个位进行运算。 若要执行的数字、 布尔值或对任何两个非十进制值的比较运算,这两个值都必须使用相同的表示形式。

通用 Windows 平台
自 8 起可用
.NET Framework
自 1.1 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用

此类型的所有成员都是线程安全。 实际上,看起来要修改实例状态的成员返回使用新值进行初始化的新实例。 作为与任何其他类型,读取和写入对共享变量,其中包含此类型的实例必须保护锁来保证线程安全性。

System_CAPS_caution小心

分配此类型的实例不是线程安全的所有硬件平台上因为该实例的二进制表示形式可能太大,无法在单个原子操作中分配。

返回页首
显示: