黑马程序员----C#中的不同数据类型之间的转换

----------------------  ASP.Net+Android+IO开发S  、  .Net培训 、期待与您交流! ----------------------


    在C#中有些数据类型可以转换成另一种数据类型。

         如果是一种值类型转换为另一种值类型,一种引用类型转换为另一种引用类型,比较常见的转换方式是隐式转换和显示转换。当从低精度,小范围的数据类型转换为高精度,大范围的数据类型是,系统就会自动帮我们转换,也就是隐式转换。如果是将大范围类型的数据转换为小范围类型的数据,就必须使用强制转换,也就是显示转换。

        如果是不同类型之间的相互转换,我们也可以通过其他的方法来进行转换。

       例如,每种方法都有ToString方法,所以你可以把任何数据类型转换为字符串类型,语法是:要转换的类型.ToString();

 1),隐式转换

                转换的条件:

               1,两种类型兼容

               例如:int 和 double兼容

              2,目标类型大于源类型

              例如:double > int

             当系统帮我们自动转换时,是不会丢失精度。如果丢失精度,这个转换就不会自动完成。

             例如:

static void Main(string[] args)
        {
            
            int i = 1;
            double PI = 3.14;
            double result = i + PI;  //系统帮我们把int类型的i隐式转换为double类型
            Console.WriteLine("结果是:{0}",result);
            Console.ReadKey();
        }
    


    

 (2),显示转换

             当需要丢失精度的转换时,系统就不会帮我们自动转换了,这时就需要程序员自己写代码完成转换。

             转换语法:

                 (要转换成的数据类型名)待转换的值

   

             例如:

static void Main(string[] args)
        {

            int i = 3;
            double PI = 3.14;
            int result = i + (int)PI;  //强制将double类型的PI转换成int类型
            Console.WriteLine("结果是:{0}",result);
            Console.ReadKey();
        }


          注意:强制类型转换要求待转换的类型和目标类型必须都为数字。

          下面两种转换是错误的:

           string age =(int)console.readline();

           int a = (int )33;

 3),利用convert类转换

               Convert不在仅是内存级别的转换,而是考虑数据意义的转换。它是一个加工、改造的过程。

               语法:

                    Convert.To转换后的类型(需要转换的变量)

               例如:

                    利用Convert.ToInt(32)(待转字符串);

  

 static void Main(string[] args)
        {
            
            string str = "123";
            
            Try  //需要注意的是,如果待转字符串不是一个数字或者其范围大于或小于   
                 //Int32所表示的范围,转换就会报错
            {
                //利用conver类把string类型转换为int类型
                int number = Convert.ToInt32(str);
                Console.WriteLine("转换成功!结果是:{0}",number);
            }
            catch
            {
                Console.WriteLine("转换失败!");
            }
            Console.ReadKey();
 

 4),使用parse方法:

               大部份预定义值类型都有这个静态方法,用来将相应的文本转化为相应的值类型。

               最常用的两个parse方法:

               1),将数字的字符串表示形式转换为int类型:

                语法:

                    Int.parse(待转数字字符串);

               例如:

 static void Main(string[] args)
        {

            string str = "abc";
            try  //注意:要转换的类型必须是数字型的字符串,否则会报错
            {
                int number = int.Parse(str);    //利用int.Parse();方法,把string类型转换为
                                          //Int类型
                Console.WriteLine("转换成功:{0}", number);
            }
            catch
            {
                Console.WriteLine("转换失败");
            }
            Console.ReadKey();
        }



               注意:待转类型不仅要是数字形式的字符串,而且还不能为空,更不能超出int所能表示的范围

        2),第二种方法与第一种方式类似,所不同的是:此方法在转换失败时不引发异常

            语法:

                 int.TryParse(待转换的字符串, out result);

          注意: Result类型为int,如果转换成功,成功后的值将被存入到result,并输出。此方法有一个返回值,返回值类型为bool,如果成功转换了字符串,则为true,否则为false

          例如:

 

    static void Main(string[] args)
           {
   
               string str = "123";
               int number = 0;
               //利用int.TryParse();方法将string类型转换为int类型
               //如果转换成功,则返回true,并把值输出给number,否则返回false。
               if (int.TryParse(str, out number))
               {
                   Console.WriteLine("转换成功:{0}", number);
               }
               else
               {
                   Console.WriteLine("转换失败!");
               }
               Console.ReadKey();
           }


 5),其他转换用运算符:as

              as运算符用于执行引用类型的显示类型转换。如果要转换的类型与指定类型兼容,转换就会成功;如果类型不兼容,则返回null

              语法:

                   表达式  as 类型

              例如:

     object obj = new object();
            Socket soc = obj as Socket;   //利用as 将object类型转换为Socket类型

           注意: As运算符类似于类型转换,所不同的是,当转换失败时,as运算符将返回null,而不是引发异常。



----------------------  ASP.Net+Android+IO开发S  、  .Net培训 、期待与您交流! ----------------------



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值