C#——类型转换

本文详细介绍了C#中的类型转换,包括同一类型转换(Cast)和不同类型转换(Convert)。通过实例演示了隐式转换、显示转换(强制转换)以及如何使用Convert类在不同类型间进行转换。

类型转换

一、c#类型转换可以分为两大类:一类是同一类型转换(Cast),另一类是不同类型转换(Convert)。

   (一)同一类型转换(Cast)可分为两种:

      (1)隐式转换:如果当目标类型一定能满足源类型转换过去后的要求的话就是隐式转换。

      (2)显示转换(强制转换):如果当目标类型不一定能满足源类型转换过去后的要求的话就需要显示转换(程序员自已负责)。

具体解释参考下图:

(二)不同类型转换:Convert

二、具体实例

  <1>同一类型数据转换实例:

      功能段1:怎样打印数据类型的范围

       功能段2:隐式转换

       功能段3:强制转换(byte)

namespace Cast入门
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 怎样打印数据类型的范围
            Console.WriteLine("int的最大值是{0},最小值{1}",int.MaxValue,int.MinValue);
            Console.WriteLine("byte的最大值是{0},最小值{1}",byte.MaxValue,byte.MinValue);
            //int i =99999999999999999;   错误:99999999999999999超出int整数范围
            #endregion

            #region    隐式转换
            byte b = 3;
            int i = b;   //(一个小的范围里的数放在一个大的范围里一定会放下的,这就好比小容器一定能放在大容器里)隐式转换
            Console.WriteLine(i);
            #endregion

            #region   强制转换(byte)
            //b = i;    (一个大的范围里的数放在一个小的范围里可能会放不下,编译器不能保证一定能转换成功。)
            b=(byte)i;   //强制转换
            Console.WriteLine(b);

            //注意:标byte与不标byte的区别

            i = 2;
            b = i;                     //不标上byte,程序报错。
            Console.WriteLine(b);

            i = 2;                      
            b = (byte)i;                //标上byte,程序不报错了,但程序员来负责
            Console.WriteLine(b);

            //注意:标byte与不标byte的区别

            i = 2000;
            b = i;                      //不标上byte,程序报错.
            Console.WriteLine(b);

            i = 2000;
            b = (byte)i;                //标上byte,程序不报错,错误程序员来负责。
            Console.WriteLine(b);
            #endregion

            Console.ReadKey();
        }
    }
}

注意:在隐式转换中注意标注byte,它做代表的意思是:强制转换,程序不再报错,转换结果程序员自己负责。

<2>不同类型数据转换实例:

namespace Convert转换
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "123";
            // i = (int)s;       //不能在string和int之间进行强制类型转换,只能用convert
            int i = Convert.ToInt32(s);    
            Console.WriteLine(i);
            Console.ReadKey();
        }
    }
}

 

<3>同一类型数据转换和不同类型数据转换实例的综合比较:

namespace 类型转换
{
    class Program
    {
        static void Main(string[] args)
        {
            //同一类型数据之间的转换:隐式转换、显示转换(强制转换)
           byte b1 = 2;
           int i1 = b1;              //隐式转换(同一类型的数据,:小→大)
           Console.WriteLine(i1);

           int i2 = 2000;
           byte b2 = (byte)i2;      // 强制转换(同一数类型:大→小)
           Console.WriteLine(b2);
           Console.ReadKey();


           // 不同类型数据之间的转换:convert
           string s = "123";
           // i = (int)s;       //不能在string和int之间进行强制类型转换,只能用convert
           int i = Convert.ToInt32(s);    //convert:不同类型数据之间的转换
           Console.WriteLine(i);
           Console.ReadKey();
        }
    }
}


 总结(个人理解):

 Cast和convert两大类型转换的区别:

        Cast:同一类型的数据的转换,只是大小范围不同之间同一类型之间的转换(比如:byte类型和int类型之间的转换)

        (1) 小范围转换为大范围转换:隐式转换(同一类型的数据,:小→大)

        (2)大范围转换为小范围转换:强制转换(同一类型的数据:大→小)

        Convent:不同类型的数据的转换,不可以进行强制转换,只能用convert(比如:int类型和string类型之间的转换)

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值