C#类型转换

隐式转换:从类型A到类型B的转换可在所有情况下进行,执行转换的规则非常简单,可以让编译器执行转换.

隐式转换不需要做任何的工作,也不需要另外编写代码.

Var1=var2  如果var2的类型可以隐式的转换成var1的类型,这条赋值语句就涉及隐式转换.这两个变量的类型也可能相同,此时就不需要隐式转换.

Ushort和char的值是可以互换的,因为它们都可以存储0到65535之间的数字,在这两种类型之间可以进行隐式转换,如下代码

ushort destinationVar;

            char sourceVar = 'a';

            destinationVar = sourceVar;

            Console.WriteLine($"sourceVar va1:{sourceVar}");

            Console.WriteLine($"destinationVar val:{destinationVar}");

            Console.ReadKey();

结果显示:

即使两个变量存储想相同,使用不同的类型解释他们时,方式也是不同的.

简单类型有许多隐式转换,bool和string 没有隐式转换,但数值类型有一些隐式转换.

隐式数值转换表

类型

可以安全的转换为

int

long,float,double,decimal

uint

long,ulong,float,double,decimal

long

float,double,decimal

ulong

float,double,decimal

float

Double

char

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

byte

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

sbyte

Short,int,long,float,double,decimal

short

Int,long,float,double,decimal

ushort

Int,uint,long,ulong,float,double,decimal

 

显示转换:从类型A到类型B的转换只能在某些情况下进行,转换规则比较复杂,应进行某种类型的额外处理.

在明确要求编译器把数值从一个数据类型转换为另一种数据类型时,就是在执行显示转换.因此,这需要另外编写代码,代码的格式因转换方法而异.强制转换就是强迫数据从一种类型转换成为另一种类型,其语法比较简单:

(<destinationType>)<sourceVar>

这将把<sourceVar>中的值转换为<destinationType>类型

代码举例:

byte destinationVar;

            short sourceVar = 7;

            destinationVar = (byte)sourceVar;

            Console.WriteLine($"sourceVar val:{sourceVar}");

            Console.WriteLine($"destinationVar val:{destinationVar}");

            Console.ReadKey();

 

运行结果如下图:

不能转换的格式之间会溢出报错.

猜你喜欢

转载自blog.csdn.net/qq_39674002/article/details/81515351