c#中的as到底是什么意思啊

比如我定义一个类A 一个类B
A a =new A();
a.getvalue()//实现a的某方法
B b= a as B;
b.getvalue()//这到底是实现A的方法还是B的?

第1个回答  推荐于2017-09-12
(1)as运算符用于执行引用类型的显式类型转换。 如果要转换的类型与指定类型兼容,转换就会成功;如果类型不兼容,则返回null。as 运算符类似于类型转换,所不同的是,当转换失败时,as 运算符将返回null,而不是引发异常。
(2)形式:表达式as 类型
as的规则如下:
1. 检查对象类型的兼容性,并返回结果,如果不兼容就返回null;
2. 不会抛出异常;
3. 如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。
代码如下:Student s1 = studentObj as Student;
解释:如果CLR检测studentProgram引用对象类型不兼容目标类型,即不能进行强制类型转换,则返回一个null,永远不会抛出异常。
第2个回答  2012-12-05
B追问

如果类A里有x,y属性
类B里也有x,y属性
将对象a转换成类B后原有的a.x,a.y的值是被B的初始化函数重置掉 还是保留下来?

相似回答