• (int)、Int32.Parse()、Convert.ToInt32()类型区别


     int 关键字表示一种整型,是32位的,它的 .NET Framework 类型为 System.Int32。

        (int)表示使用显式强制转换,是一种类型转换。当我们从 int 类型到 long、float、double 或decimal 类型,可以使用隐式转换,但是当我们从 long 类型到 int 类型转换就需要使用显式强制转换,否则会产生编译错误。

        Int32.Parse()表示将数字的字符串转换为32 位有符号整数,属于内容转换。
        我们一种常见的方法:public static int Parse(string)。
        如果 string 为空,则抛出 ArgumentNullException 异常;
        如果 string 格式不正确,则抛出 FormatException 异常;
        如果 string 的值小于 MinValue 或大于 MaxValue 的数字,则抛出 OverflowException 异常。

        Convert.ToInt32() 则可以将多种类型(包括 object 引用类型)的值转换为 int 类型,因为它有许多重载版本[2]:
        public static int ToInt32(object);
        public static int ToInt32(bool);
        public static int ToInt32(byte);
        public static int ToInt32(char);
        public static int ToInt32(decimal);
        public static int ToInt32(double);
        public static int ToInt32(short);
        public static int ToInt32(long);
        public static int ToInt32(sbyte);
        public static int ToInt32(string);

        (int)和Int32.Parse(),Convert.ToInt32()三者的应用举几个例子:    

        例子一:

        long longType = 100;
        int intType = longType;       // 错误,需要使用显式强制转换
        int intType = (int)longType; //正确,使用了显式强制转换

        例子二:

        string stringType = "12345"; 
        int intType = (int)stringType;                 //错误,string 类型不能直接转换为 int 类型
        int intType = Int32.Parse(stringType);   //正确


        例子三:

        long longType = 100;
        string stringType = "12345";
        object objectType = "54321";
        int intType = Convert.ToInt32(longType);        //正确
        int intType = Convert.ToInt32(stringType);     //正确
        int intType = Convert.ToInt32(objectType);    //正确

        例子四:

        double doubleType = Int32.MaxValue + 1.011; 
        int intType = (int)doubleType;                                //虽然运行正确,但是得出错误结果
        int intType = Convert.ToInt32(doubleType)            //抛出 OverflowException 异常

       (int)和Int32.Parse(),Convert.ToInt32()三者的区别:

        第一个在对long 类型或是浮点型到int 类型的显式强制转换中使用,但是如果被转换的数值大于 Int32.MaxValue 或小于 Int32.MinValue,那么则会得到一个错误的结果。

        第二个在符合数字格式的 string 到 int 类型转换过程中使用,并可以对错误的 string 数字格式的抛出相应的异常。

        第三个则可以将多种类型的值转换为 int 类型,也可以对错误的数值抛出相应的异常。

        无论进行什么类型的数值转换,数值的精度问题都是我们必须考虑的。

  • 相关阅读:
    将PHP文件生成静态文件源码
    Entity Framework Code First 学习日记(6)一对多关系
    Entity Framework Code First 学习日记(5)
    Entity Framework Code First 学习日记(3)
    Entity Framework Code First 学习日记(7)多对多关系
    Entity Framework Code First学习日记(2)
    Entity Framework Code First 学习日记(8)一对一关系
    Entity Framework Code First 学习日记(9)映射继承关系
    Entity Framework Code First 学习日记(10)兼容遗留数据库
    Entity Framework Code First 学习日记(4)
  • 原文地址:https://www.cnblogs.com/easypass/p/2536250.html
Copyright © 2020-2023  润新知