PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > ASP.NET教程 > 正文

    C#基本语法之类型转换

    作者:jing061301来源:B5教程网浏览:时间:2020-09-30 00:07:50我要评论
    导读:类型转换的分类 C#有两种转换数据类型的方式,隐式转换跟显式转换。1:隐式转换方式我们经常把一种数据类型转换为另一种数据类型,这就是...
    类型转换的分类

      C#有两种转换数据类型的方式,隐式转换显式转换
    1:隐式转换方式
    我们经常把一种数据类型转换为另一种数据类型,这就是类型转换,比如以下代码:

     
    复制代码 代码如下:
    byte b = 25;
    byte a = 8;
    byte sum;
    sum = a + b;

    如果在编译器里一定会会产生一个错误,Cannot implicitly convert type 'int' to 'byte' (不能把int隐式转换为byte类型)。原因是我们把两个Byte类型数据相加在一起时,会返回一个int类型的结果,而不是一个byte类型结果。这是因为byte中只能存储8位数据,所以把两个Byte相加就可能出现起出8位的数据,所以会出错。如果我们把sum 的类型换成int就不会出现问题了
     
    复制代码 代码如下:
    byte b = 25;
               byte a = 8;
               int sum;
               sum = a + b;
    下面我提供一个可以隐式转换类型的表格大家做为参考吧
    源类型 目的类型
    sbyte short,int,long,float,double,decimal
    byte short,ushort,int,uint,long,ulong,float,double,decimal
    short int,long,float,double,decimal
    ushort int,uint,long,ulong,float,double,decimal
    int long,float,double,decimal
    uint long,ulong,float,double,decimal
    long,ulong float,double,decimal
    float double 
    char ushort,int,uint,long,ulong,float,double,decimal
     
    以上表格是可以从源类型隐式转换为目的类型的类型,只要上面表格里面的都不需要显式的都转换类型.net会自动转换并不会出错。
    2:
    显式转换方式
    显式转换也可称之为强制转换,因为在此转换过程中是最容易出错的。一般语法如下:

     
    复制代码 代码如下:
    long b = 25;
              int a = (int)b;
    这是把目的类型放在前面的小括号里面。
    在显式的数据类型转换时很有可能出产生溢出比如:
     
    复制代码 代码如下:
    long b = 3000000000;
              int a = (int)b;
    大家想一下会输出什么,
    错误
    3000000000
    答案是:
     
    复制代码 代码如下:
    -1294967296
    大家可以动手试试
    再看如下代码:
     
    复制代码 代码如下:
    try
              {
                  long b = 3000000000;
                  int a = checked((int)b);
              }
              catch (Exception)
              {
                  
                  throw;
              }
    其实在转换之前可以使用checked关键字来验证一下是否安全,checked关键字可以检查数据类型的转换是否安全。运行如上代码会出现如下异常:
     
    复制代码 代码如下:
    算术运算导致溢出。
    还有一种情况是数据丢失。比如:
     
    复制代码 代码如下:
                 // 第一种情况
                   double b = 10.1;
                    int a = (int)(b + 0.5);
                 //第二种情况
                    double b = 10.1;
                    int a = (int)(b);
    想一下如上两种情况会输出什么。答案如下:
     
    复制代码 代码如下:
    10
    10
    便是10,也就是说他会取一个最小的整数,而不会进行四舍五入,更不会有小数位,因为目标类型是int类型。这点大家一种要注意,如数字比较精确的地方一定不要使用哦!!!
    ASCII转换
     
    复制代码 代码如下:
     int b = 88;
                    char a = (char)(b);
    上面代码会转出一个大写的X。也就是说int类型要可以直接通过char来转换为ASCII对应的字符。

    下面咱们再看一种Parse方法的方式
     
    复制代码 代码如下:
                    string b = "105";
                    int a = int.Parse(b);

                    string b = "105.5";
                    int a = int.Parse(b);
    看看上面会输出什么,答案是:
     
    复制代码 代码如下:
    105
    异常:输入字符串的格式不正确。
    第二个会报错,在这种情况下是不会进行最小整数的,这点大家也要注意。对于Object类型我不得不提一下Tostring()方法了,所有的Object类型基本上都有一个toString()方法,这是系统重载过的,可以直接把类型转成String类型非常 方法比如:
     
    复制代码 代码如下:
    int b = "105.5";
    string a = b.ToString();
    好了最后咱们一起来看一下Convert方法吧。相信这个大家一定都非常的熟悉了,我先提供一下这个类签名给大家看https://b5.mxunkeji.com/uploadfile/2014/0520/20140520051339969.txt
    这个类是专门用来进行类型转化的用法如下:
     
    复制代码 代码如下:
    string b = "105";
    int a = Convert.ToInt32(b);

    string e = "2013-05-01";
    DateTime dt = Convert.ToDateTime(e);

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-11-721-1.html
    相关热词搜索: C#