C#之类型转换
一、通过as实现类型转换
Person p1 = new Person(); //转换方式一 Student s1 = (Student)p1; //转换方式二 Student s2 = p1 as Student;
以上两种转换方式,第二种方式会更好。
原因:
方式一:通过这种方式进行类型转换时,如果转换失败则直接报异常
方式二:通过as的方式进行类型转换,即使转换失败也不会报异常,而是返回一个null
二、类型转换
Cast类型转换:是内存级别上的转换,内存中的数据没有变化,只是观看的角度不同。
1.隐式转换
(1)把子类类型赋值给父类类型的时候会发生隐式转换(里氏替换原则)如:Person p = new Student();
(2)把占用字节数小的数据类型赋值给占用字节数大的数据类型可以发生隐式转换(前提是它们是同一种数据类型【存在交集】)如:int n=10; double m = n;
2.显示转换:隐式类型的反过程。
Convert:不同类型之间的转换
Convert.ToString(); 将任何数据类型转换为字符串
int.parse() 将其他类型转换为int类型
总结:as用于引用类型转化比较好,效率高。在开发过程中,尽量使用as转换数据类型