as转换的问题

object obj =123;
string str = obj as string;
这样得到的str的值为null的原因:
首先 虽然123值类型赋值给引用类型,发生了装箱操作,但是 obj 变量的类型对象仍然是 System.Int32 因为C#编译器和clr需要保证C#必须类型的安全,类型安全之一就是类型必须是明确,类型必须是唯一的。as 关键字,只会检测obj 是否兼容 System.String,但是当前的obj 的类型指针是System.Int32,所以既然不兼容,那么只能返回null了
posted @ 2012-11-05 20:15  程序有Bug  阅读(179)  评论(0编辑  收藏  举报