1.隐式转换
低精度类型向高精度类型转换
double m = 1;
常量1 默认是int32的数据类型。
int m = 1.2;(报错)
常量1.2默认是double的数据类型,从高精度转低精度不允许隐式转换,否则语法报错。
2.显示转换
int m = (int)1.2;
从double转int可以使用显式转换,这里是从高精度转到低精度数据类型。但是更复杂的数据类型转换显然无法进行。
bool m =(bool)1.2;(报错)
3.使用转换函数转换
bool m = Convert.ToBoolean(1.2);
使用Convert.to系列函数可以进行多种多样的数据类型转换。
4.特定类型的转换
int m = int.Parse("33.0");(异常)
parse()也可以进行数据类型转换,但是对于转换对象,显然是非常挑剔。字符串里含有非数字就会报字符串格式不正常的异常。
5.类类型数据转换
interface IAAA {
}
class TestAA:IAAA { public int Test() { return 3; } }
class TestBB : IAAA { public int Test() { return 3; } } class DataConvert {
public static void Test() {
IAAA aAA = new TestAA();
TestBB t0 = aAA;(语法错误) TestBB t1 = (TestBB)aAA;(报异常) TestBB t2 = aAA as TestBB;(没有异常,但是t2=null)
int a = 0;
} } |
类也是一种数据类型,把对象进行数据类转换和简单数据类型是类型的。
第一种,隐式转换,语法上就不行,不同的类不能进行转换,除非是子类对象赋值给父类对象变量。
第二种现式转换,语法上可以,但是不同的类还是不能进行转换,会报异常。
第三种 使用AS 进行转换,不同的类还是不能进行转换,但是转换失败不会报异常,但是t2的值会为nul
总结:
使用conver.to系列函数和AS 语法进行数据类型转换是很好的,兼容性很强,如果转换失败也比较好判断。