请教:person other = obj as person;与下边这个语句有什么区别person other = (person)obj

解决方案 »

  1.   

    person other = obj as person; //不会报异常
    person other = (person)obj;  //会报异常
      

  2.   

    用as,转换不成功的时候结果是null,所以很容易判断转换是否成功。
      

  3.   

    不仅仅是抛异常或转换不成功返回null那么简单...as运算符只可用于引用类型,所以对值类型的强制转换无能为力...
     
    参考...
    如何:使用 as 和 is 运算符安全地进行强制转换(C# 编程指南)
      

  4.   

    person不是class而是struct,则第一种编译无法通过,不允许使用as运算符...
      

  5.   

    谢谢vrhero,昨天的指教还没有感谢,今天我会加分了,而且,我发现我有200分可用.
    我还有一个问题,是关于属性的使用,请不吝赐教。
    http://topic.csdn.net/u/20090708/22/dadb7c47-d0a5-489a-b405-372ae6e99929.html?82139
      

  6.   

    ()- 显式类型转换,所有的现式类型转换都是不安全的,可能引发异常或数据丢失、精度下降等,使用强制类型转换可以吧简单类型的任何实例转换成另一种类型。但是也有一些限制,比如,值类型只能在数字、char、和enum类型之间转换,而不能直接把boolean数据类型转换为其他类型,也不能把其它类型转换为Boolean类型
    as运算符用于执行引用类型的显式类型转换。如果要转换的类型与指定的类型兼容,转换就成功,否则返回null