数据类型转换系列——第一篇 显示和隐式转换

        当我们在编写程序时,会发现有时候需要对不同类型的数据进行互相转换,之所以进行数据转换,是因为C#是在编译时静态类型化的,因此变量在声明后就无法再次声明,或者无法用语存储其他类型的值,除非该类型可以转换为变量的类型。

                              隐式转换

隐式转换:由于该转换时一种安全类型的转换,不会导致数据丢失,因此不需要任何特殊的语法。例如从较小整型到较大整型的的转换以及由派生类到基类的转换都是这样的转换。

隐式转换是有限制的,一般是低类型向高类型转换,能够保证值不发生变化,有个表格:

原数据类型

可隐式转换数据类型

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

float,double,decimal

char

ushort,int,uint,long,ulong,float,double,decimal

float

double

ulong

float,double,decimal

对于引用类型,隐式转换始终存在于一个类转换该类的任何一个直接或间接的基类或接口的情况,例如:

aClass a=new aClass();//定义一个对象
baseClass b=a;//隐式转换为基类的类型

    

                                  显示转换

显示转换:显示转换需要强制性转换运算符。在该区域中,可能会丢失信息或不成功,典型的实例包括转换为具有较低精度或小的区域的类型和派生类到积累实力的转换。

显示转换又称强制性转换,是显示通知编译器打算进行转换且知道可能会发生数据丢失的一种数据转换方式。

double x=123.4;
int a;
a=(int )x;

以上程序在执行转换过程中,整型类型不支持的数据会被舍弃,经过转换后为123。

对于引用类型,如果需要从基类型转换为派生类型,则必须显示强制转换;引用类型之间的强制转换操作不会更改基础对象的运行时类型;它只更改用作对该对象的引用的值得类型。

一个比较完整值类型内包括隐式和显示的数据转换的例子:

 static void Main(string[] args)
        {
            int num = 123;
            long bigNum = num;
            Console.WriteLine("num={0},bigNum={1}而这数据一样",num,bigNum);
            double d = 123.4;
            int dd = (int)d;
            Console.WriteLine("d={0},dd={1}而这数据不一样",d,dd);
            Console.ReadKey();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值