此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Int32 结构

2013/12/13

表示 32 位有符号整数。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public struct Int32 : IComparable, IComparable<int>, 
	IConvertible, IEquatable<int>, IFormattable

Int32 类型公开以下成员。

  名称说明
公共方法CompareTo(Int32)将此实例与指定的 32 位有符号整数进行比较,并返回一个整数,该整数指示此实例的值是大于、小于还是等于指定的 32 位有符号整数的值。
公共方法CompareTo(Object)将此实例与指定对象进行比较,并返回一个整数,该整数指示此实例的值是大于、小于还是等于指定对象的值。
公共方法Equals(Int32)返回一个值,该值指示此实例是否与指定的 Int32 值相等。
公共方法Equals(Object)返回一个值,该值指示此实例是否等于指定的对象。 (重写 ValueType.Equals(Object)。)
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法GetHashCode返回此实例的哈希代码。 (重写 ValueType.GetHashCode()。)
公共方法GetType获取当前实例的 Type (从 Object 继承。)
公共方法GetTypeCode返回值类型 Int32TypeCode
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法静态成员Parse(String)将数字的字符串表示形式转换为它的等效 32 位有符号整数。
公共方法静态成员Parse(String, NumberStyles)将指定样式的数字的字符串表示形式转换为它的等效 32 位有符号整数。
公共方法静态成员Parse(String, IFormatProvider)将指定的区域性特定格式的数字的字符串表示形式转换为它的等效 32 位有符号整数。
公共方法静态成员Parse(String, NumberStyles, IFormatProvider)将指定样式和区域性特定格式的数字的字符串表示形式转换为它的等效 32 位有符号整数。
公共方法ToString()将此实例的数值转换为其等效的字符串表示形式。 (重写 ValueType.ToString()。)
公共方法ToString(IFormatProvider)使用指定的区域性特定格式设置信息,将此实例的数值转换为它的等效字符串表示形式。
公共方法ToString(String)使用指定的格式,将此实例的数值转换为它的等效字符串表示形式。
公共方法ToString(String, IFormatProvider)使用指定的格式和区域性特定格式设置信息,将此实例的数值转换为它的等效字符串表示形式。
公共方法静态成员TryParse(String, Int32)将数字的字符串表示形式转换为它的等效 32 位有符号整数。一个指示转换是否成功的返回值。
公共方法静态成员TryParse(String, NumberStyles, IFormatProvider, Int32)将指定样式和区域性特定格式的数字的字符串表示形式转换为它的等效 32 位有符号整数。一个指示转换是否成功的返回值。
返回顶部

  名称说明
公共字段静态成员MaxValue表示 Int32 的最大可能值。此字段为常量。
公共字段静态成员MinValue表示 Int32 的最小可能值。此字段为常量。
返回顶部

  名称说明
显式接口实现私有方法IConvertible.ToBoolean基础结构。 有关此成员的说明,请参见 IConvertible.ToBoolean
显式接口实现私有方法IConvertible.ToByte基础结构。 有关此成员的说明,请参见 IConvertible.ToByte
显式接口实现私有方法IConvertible.ToChar基础结构。 有关此成员的说明,请参见 IConvertible.ToChar
显式接口实现私有方法IConvertible.ToDateTime基础结构。 不支持此转换。尝试使用此方法将引发 InvalidCastException
显式接口实现私有方法IConvertible.ToDecimal基础结构。 有关此成员的说明,请参见 IConvertible.ToDecimal
显式接口实现私有方法IConvertible.ToDouble基础结构。 有关此成员的说明,请参见 IConvertible.ToDouble
显式接口实现私有方法IConvertible.ToInt16基础结构。 有关此成员的说明,请参见 IConvertible.ToInt16
显式接口实现私有方法IConvertible.ToInt32基础结构。 有关此成员的说明,请参见 IConvertible.ToInt32
显式接口实现私有方法IConvertible.ToInt64基础结构。 有关此成员的说明,请参见 IConvertible.ToInt64
显式接口实现私有方法IConvertible.ToSByte基础结构。 有关此成员的说明,请参见 IConvertible.ToSByte
显式接口实现私有方法IConvertible.ToSingle基础结构。 有关此成员的说明,请参见 IConvertible.ToSingle
显式接口实现私有方法IConvertible.ToType基础结构。 有关此成员的说明,请参见 IConvertible.ToType
显式接口实现私有方法IConvertible.ToUInt16基础结构。 有关此成员的说明,请参见 IConvertible.ToUInt16
显式接口实现私有方法IConvertible.ToUInt32基础结构。 有关此成员的说明,请参见 IConvertible.ToUInt32
显式接口实现私有方法IConvertible.ToUInt64基础结构。 有关此成员的说明,请参见 IConvertible.ToUInt64
返回顶部

Int32 是不可变的值类型,它表示有符号整数,其范围从负 2,147,483,648(用 Int32.MinValue 常数表示)到正 2,147,483,647 的值(用 Int32.MaxValue 常数表示)。.NET 框架还包括一个 32 位无符号整数值类型,UInt32 表示从 0 到 4,294,967,295 的值。

实例化 Int32 值

可通过多种方法实例化 Int32 值:

  • 您可以声明一个 Int32 变量,并将它设定为在 Int32 数据类型范围内的文本整数值。下面的示例声明两个 Int32 变量,并以这种方式为它们分配值。

    
    int number1 = 64301;
    int number2 = 25548612;
    
    
    
  • 您可以对范围波动于 Int32 类型子集的整数类型指定一个值。这是一个扩大转换;它不需要强制转换运算符(在 C# 中)或对转换方法的调用(在 Visual Basic 中)。

    
    sbyte value1 = 124;
    short value2 = 1618;
    
    int number1 = value1;
    int number2 = value2;
    
    
    
  • 您可以对范围超出了 Int32 类型的数值类型指定一个值。这是一个收缩转换,因此,如果 OptionStrict 为打开状态,它在 C# 中需要一个强制转换运算符,在 Visual Basic 中需要转换方法。如果数字的值是 SingleDouble 或包括小数部分的 Decimal 值,其小数部分的处理取决于编译器执行转换。下面的示例运用了收缩转换,把几个数值赋给 Int32 变量。

    
    long lNumber = 163245617;
    try
    {
       int number1 = (int)lNumber;
       outputBlock.Text += number1 + "\n";
    }
    catch (OverflowException)
    {
       outputBlock.Text += String.Format("{0} is out of range of an Int32.", lNumber) + "\n";
    }
    
    double dbl2 = 35901.997;
    try
    {
       int number2 = (int)dbl2;
       outputBlock.Text += number2 + "\n";
    }
    catch (OverflowException)
    {
       outputBlock.Text += String.Format("{0} is out of range of an Int32.", dbl2) + "\n";
    }
    
    BigInteger bigNumber = 132451;
    try
    {
       int number3 = (int)bigNumber;
       outputBlock.Text += number3 + "\n";
    }
    catch (OverflowException)
    {
       outputBlock.Text += String.Format("{0} is out of range of an Int32.", bigNumber) + "\n";
    }
    // The example displays the following output:
    //       163245617
    //       35902
    //       132451
    
    
    
  • 调用 Convert 类方法,可以将任何支持的类型转换成一个 Int32 值。这是可能的,因为 Int32 支持 IConvertible 接口。下面的示例演示如何将 Decimal 值的数组转换为 Int32 值。

    
    decimal[] values= { Decimal.MinValue, -1034.23m, -12m, 0m, 147m,
                        199.55m, 9214.16m, Decimal.MaxValue };
    int result;
    
    foreach (decimal value in values)
    {
       try {
          result = Convert.ToInt32(value);
          outputBlock.Text += String.Format("Converted the {0} value '{1}' to the {2} value {3}.",
                            value.GetType().Name, value,
                            result.GetType().Name, result) + Environment.NewLine;
       }
       catch (OverflowException) {
          outputBlock.Text += String.Format("{0} is outside the range of the Int32 type.",
                            value) + Environment.NewLine;
       }   
    }                                  
    // The example displays the following output:
    //    -79228162514264337593543950335 is outside the range of the Int32 type.
    //    Converted the Decimal value '-1034.23' to the Int32 value -1034.
    //    Converted the Decimal value '-12' to the Int32 value -12.
    //    Converted the Decimal value '0' to the Int32 value 0.
    //    Converted the Decimal value '147' to the Int32 value 147.
    //    Converted the Decimal value '199.55' to the Int32 value 200.
    //    Converted the Decimal value '9214.16' to the Int32 value 9214.
    //    79228162514264337593543950335 is outside the range of the Int32 type.
    
    
    
  • 可以调用 ParseTryParse 方法将 Int32 值的字符串表示形式转换为 Int32。该字符串可包含十进制或十六进制数字。下面的示例通过使用一个十进制和一个十六进制的字符串阐释了分析操作。

    
    string string1 = "244681";
    try
    {
       int number1 = Int32.Parse(string1);
       outputBlock.Text += number1 + "\n";
    }
    catch (OverflowException)
    {
       outputBlock.Text += String.Format("'{0}' is out of range of a 32-bit integer.", string1) + "\n";
    }
    catch (FormatException)
    {
       outputBlock.Text += String.Format("The format of '{0}' is invalid.", string1) + "\n";
    }
    
    string string2 = "F9A3C";
    try
    {
       int number2 = Int32.Parse(string2,
                                System.Globalization.NumberStyles.HexNumber);
       outputBlock.Text += number2 + "\n";
    }
    catch (OverflowException)
    {
       outputBlock.Text += String.Format("'{0}' is out of range of a 32-bit integer.", string2) + "\n";
    }
    catch (FormatException)
    {
       outputBlock.Text += String.Format("The format of '{0}' is invalid.", string2) + "\n";
    }
    // The example displays the following output:
    //       244681
    //       1022524
    
    
    

对 Int32 值执行操作

Int32 类型支持标准数学运算,如加法、减法、除法、乘法、减法、求反和一元求反。与其他该整型类型类似,Int32 类型还支持按位 ANDORXOR、左移位和右移位运算符。

您可以使用标准数值运算符对两个 Int32 值进行比较,或者,您可以调用 CompareToEquals 方法。

把 Int32 当作一个字符串。

Int32 类型提供对标准和自定义数字格式字符串的完全支持。

若要格式设置 Int32 值的为一个无前导零的整数字符串,您可以调用 ToString() 的无参数方法。通过使用“D”格式说明符,您还可以包括指定数量的字符串表示形式中的前导零。通过使用“N”格式说明符,可以包括组分隔符并指定要显示的数字的字符串表示形式中的十进制数字的数量。您可以使用“X”格式说明符来显示 Int32 值的字符串表示形式。下面的示例用以下四种方式将 Int32 值的数组中元素进行格式设置。


int[] numbers = { -1403, 0, 169, 1483104 };
foreach (int number in numbers)
{
   // Display value using default formatting.
   outputBlock.Text += String.Format("{0,-8}  -->   ", number.ToString());
   // Display value with 3 digits and leading zeros.
   outputBlock.Text += String.Format("{0,11:D3}", number);
   // Display value with 1 decimal digit.
   outputBlock.Text += String.Format("{0,13:N1}", number);
   // Display value as hexadecimal.
   outputBlock.Text += String.Format("{0,12:X2}", number);
   // Display value with eight hexadecimal digits.
   outputBlock.Text += String.Format("{0,14:X8}", number) + "\n";
}
// The example displays the following output:
//    -1403     -->         -1403     -1,403.0    FFFFFA85      FFFFFA85
//    0         -->           000          0.0          00      00000000
//    169       -->           169        169.0          A9      000000A9
//    1483104   -->       1483104  1,483,104.0      16A160      0016A160


通过调用 ToString(Int32, Int32) 方法并将基作为第二个参数,您还可以将 Int32 值的格式设置为二进制、八进制、十进制或十六进制字符串。下面的示例调用此方法显示二进制、八进制和十六进制一组整数值组成的表示形式。


int[] numbers = { -146, 11043, 2781913 };
outputBlock.Text += String.Format("{0,8}   {1,32}   {2,11}   {3,10}",
                  "Value", "Binary", "Octal", "Hex") + "\n";
foreach (int number in numbers)
{
   outputBlock.Text += String.Format("{0,8}   {1,32}   {2,11}   {3,10}",
                     number, Convert.ToString(number, 2),
                     Convert.ToString(number, 8),
                     Convert.ToString(number, 16)) + "\n";
}
// The example displays the following output:
//       Value                             Binary         Octal          Hex
//        -146   11111111111111111111111101101110   37777777556     ffffff6e
//       11043                     10101100100011         25443         2b23
//     2781913             1010100111001011011001      12471331       2a72d9


使用非小数 32 位整数值

除了使用作为十进制值的单个整数,您可能需要执行与整数值的按位运算,或使用整数值的二进制或十六进制表示法。Int32 值中 31 位为符号位用于在三十秒位表示。正值是使用标志和数值形式表示。负值是以 2 的补数形式表示。当您在 Int32 值上执行按位运算,或当您使用各个位时,记住这一点很重要。若要执行一个数值,布尔,或任何两个的十进制值的比较操作,这两个值都必须使用相同的表示形式。

Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

此类型的所有成员都是线程安全的。看似修改了实例状态的成员实际上返回一个用新值初始化的新实例。正如对任何其他类型一样,对于包含此类型的实例的共享变量,也必须通过锁定来保护对其进行的读写,以保证实现线程安全。

显示:
© 2015 Microsoft