zoukankan      html  css  js  c++  java
  • 值类型转换的几种方式

    引用类型的转换方式有隐式转换、强制转换、as转换等。值类型的转换方式也有不少,本篇稍稍归纳。


    □ 隐式转换

     

    int i = 10;
    
    float f = i;
    
    Console.WriteLine(f);

    如果是值类型,当被转换变量的数值范围小于目标变量的数值范围,就可以实现隐式转换;如果是引用类型,子类可以隐式转换成父类。

     

    □ 强制转换

     

    float f = 10.56f;
    
    int i = (int) f;
    
    Console.WriteLine(i);

    如果是值类型,当被转换变量的数值范围大于目标变量的数组范围,考虑使用强制转换;如果是引用类型,父类可以强制转换成某个子类。值得注意的是:强制转换可能会导致损失一些精度。

     

    □ 通过System.Convert的静态方法实施转换

     

    比如把一个整型转换成Sysem.Char类型。

    char result = Convert.ToChar(68);
    
    Console.WriteLine(result);

    通过System.Convert转换失败会报OverflowException异常。

     

    □ 通过值类型的静态方法

     

    把字符串转换成int类型。

    string str = "11";
    
    int i = int.Parse(str);
    
    Console.WriteLine(i);

     

    如果字符串中包含非数字,会抛出System.FormatException异常。

    string str = "11a";
    
    int i = int.Parse(str);
    
    Console.WriteLine(i);

    1

     

    如何避免这种情况呢?
    --使用
    int.TryParse方法可以避免这种情况。

     

    string str = "11a";
    
    int result = 1;
    
    bool isSuccess = int.TryParse(str, out result);
    
    if (isSuccess)
    
    {
    
        Console.WriteLine(result);
    
    }
    
    else
    
    {
    
        Console.WriteLine("转换失败");
    
    }


               

    □ 通过IConvertible接口方法

     

    由于所有的值类型都实现了IConvertible接口,可以通过该接口的方法实现值类型转换。

    char result =  ((IConvertible) 68).ToChar(null);
    
    Console.WriteLine(result);

    如果转换失败,会抛出System.InvalidCastException异常。

     

     

  • 相关阅读:
    Oracle Function:COUNT
    SQL Fundamentals: Using Single-Row Functions to Customize Output使用单行函数自定义输出
    Oracle Function: NVL
    将searchBar的背景灰色去掉
    cardboard sdk for unity 系统分析
    搭建CARDBOARD+ANDROID+unity3d的VR开发环境
    adb server is out of date.killing的解决办法
    Android SDK Manager国内无法更新的解决方案
    cardboard sdk for unity 下载地址
    转载:Eclipse build Android时不生成apk问题解决方法
  • 原文地址:https://www.cnblogs.com/darrenji/p/4157837.html
Copyright © 2011-2022 走看看