关于C#的强制类型转换,as,is
AS方式:
类型转换 | 使用选择 |
Object => 已知引用类型 | 使用as操作符来完成 |
Object => 已知值类型 | 先使用is操作符来进行判断,再用类型强转方式进行转换 |
已知引用类型之间转换 | 首先需要相应类型提供转换函数,再用类型强转方式进行转换 |
已知值类型之间转换 | 最好使用系统提供的Convert类所涉及的静态方法 |
比如(FindControl(“txt_Userid”) as TextBox).Text
以前的写法是 ((TextBox) (FindControl(“txt_Userid”)).Text
个人认为最常用的还是如上面所写,Object转换为引用类型最适用,至于你认为为什么?根据我找到的答案我也只能回答,编码习惯
因为as方式要是不成功只会返回一个null.
而且在对象进行转换的时候最好加上IS判断对象转换是否能进行,这样可以减少因为转换失败导致的异常
如if(Temp is string)
{
Stirng sTemp = (string)oTemp
}
Else
{
MessageBox.Show(“Change Error!”);
}
而对于网上所说的as效率比强制类型转换效率高的说法并不清楚,因为网上的都是流传的,并没找到有实际数据的实验,个人做了个实验发现强制类型转换1000万次0.7秒,而AS方式是0.8秒.所以不知道到底是我算法问题还是没什么效率区被?或者只是是代码的编写习惯而已?