• .NET类型转型的四种做法(转)


    .NET类型转型的四种做法:

    ◆ 强制转型:(int)变量名称

    ◆ int.Parse(字符串变量名称)

    ◆ Convert.To类型(变量名称)

    ◆ TryParse


    强制转型 (casting)

    ◆ 浮点数会做无条件舍去,失去精确度

    ◆ 可处理 object 转 int,但遇到 object 为 null 时会产生 error

    ◆ 某些情况下,如 object 转型成 int,有时正常,但有时会无故发生 error,原因不明

    ◆ 无法处理 string 转 int (程序中常会用到的功能)

    ◆ 千万不可用来处理 char 类型,否则传回的是 ASCII 码,而不是字面上的数字

    int.Parse(字符串变量名称)

    ◆ 只能处理 string 转 int 或其它类型,无法处理 string 以外的类型,功能有限

    ◆ 遇到 string 为 null 或 string.Empty 时,仍会造成程序 error

    ◆ 亦可变化使用:「类型.Parse(string)」,但参数只能丢 string

    Convert.To类型(变量名称)

    ◆ 可处理所有 .NET 的类型、功能完整

    ◆ 可处理 null,几乎不会因转型造成程序 error

    ◆ 透过「Convert.ToInt32(变量)」转型成 int 时,变数若为 object 或 string 类型,当其值为 null 时,会传回 0,不会造成程序 error

    ◆ 续前一点,若此 string 类型的变量,其原始值为 string.Empty,在转型成 int 时,仍会造成程序 error

    ◆ 浮点数会做四舍五入

    ◆ 千万不可用来处理 char 类型,否则传回的是 ASCII 码,而不是字面上的数字

    测试范例:

    protected void Page_Load(object sender, EventArgs e)
    {
        char i1 = '0';
        char i2 = '9';
        string i1 = null;
        string i2 = "9";
        string i3 = string.Empty; 
        int i1 = 0;
        int i2 = 9;
        double i1 = 1.2345;
        double i2 = 1.5678;
        object i1 = null;
        object i2 = 9;
    
        // 浮点数会做无条件舍去,某些情况会无故产生 error
        Response.Write((int)i1 + ", " + (int)i2 + "<br>");
    
        // 只能处理「字符串」转型成其它类型,功能有限
        Response.Write(int.Parse(i1) + ", " + int.Parse(i2) + "<br>");  
    
        // 可处理所有类型及 Null,但浮点数会做四舍五入。推荐使用,但不可处理 char 类型
        Response.Write(Convert.ToInt32(i1) + ", " + Convert.ToInt32(i2) + "<br>");  
    }
    

    遇到要特别注意数字、金额精确度的项目时,应特别注意。

    TryParse

    这个方法是 .NET Framework 2.0 版的新功能。将数字的字串表示转换成它的对等32 位元帶正负号的整数。传回指示作业是否成功的值。 TryParse 方法与 Parse 方法类似,除了TryParse 方法在转换失败時不会掷回例外状况以外。

  • 相关阅读:
    git线上操作
    IDEA快捷方式
    Java 四种线程池
    java 获取当前天之后或之前7天日期
    如何理解AWS 网络,如何创建一个多层安全网络架构
    申请 Let's Encrypt 通配符 HTTPS 证书
    GCE 部署 ELK 7.1可视化分析 nginx
    使用 bash 脚本把 AWS EC2 数据备份到 S3
    使用 bash 脚本把 GCE 的数据备份到 GCS
    nginx 配置 https 并强制跳转(lnmp一键安装包)
  • 原文地址:https://www.cnblogs.com/seely/p/4364954.html
Copyright © 2020-2023  润新知