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

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

sinoxlive 说的对。

其它的人。别误导别人啊
as 就是转换

一般是用在a继承b,或者a实现接口b
B b= a as B;
b.getvalue()//这到底是实现A的方法还是B的?
这里实现的还是A的方法。
这是一个典型的多态用法
程序中有一句话,编译看左边,运行看右边
右边a 原来是A类型。那么b.getvalue()就是A类型的getvalue
----------------------------------------------------------------------------------------------
如果类A里有x,y属性
类B里也有x,y属性
将对象a转换成类B后原有的a.x,a.y的值是被B的初始化函数重置掉 还是保留下来?

A的值会保留下来
A转换成B ,并不是说是重新生成了一个B,A还在。只是它多加了一个名称而已
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-26
as 进行类型转换。 转型失败返回null,而不是抛出异常。
比如你举例的 B b= a as B;就相当于B b= (B)a;但是如果转型失败后一种就会抛出异常,而前一种b == null;

如果B是A 的基类,那么最后的b.getvalue()实际调用的是a的方法。
如果B不是A的基类,那么b为null b.getvalue() 会引发异常本回答被网友采纳
第2个回答  2012-12-05
as 为显示的类型转换。这里应该是调用B中的getvalue()
第3个回答  2012-12-05
as 如果a 属于B类 转换成B类的类型追问

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

追答

保留

A a=new A();
a as B
相当于变成了
B a;
convert.toInt32(); 相当与这个函数的功能

本回答被提问者采纳
第4个回答  2012-12-05
没见过,求具体完整代码。
相似回答