c#子类指向父类,如何让类型也变成父类?

类A继承类B,类A实例化Aa=newA();类A可以指向(我喜欢叫赋值,其实都知道就是引用)类B,就是Bb=A;但是这时候如果获取b的类型却是A(b.GetType()结... 类A继承类B,类A实例化A a=new A();类A可以指向(我喜欢叫赋值,其实都知道就是引用)类B,就是B b=A;但是这时候如果获取b的类型却是A(b.GetType()结果是子类A),我只想要父类部分的参数啊,我想要b.GetType()的结果是B,然后b有值,怎么办 展开
 我来答
魔法软糖™
2019-07-08 · TA获得超过837个赞
知道小有建树答主
回答量:822
采纳率:94%
帮助的人:147万
展开全部

A本身就可以当B使用,直接调用父类部分的参数就行。

你也可以创建一个B变量指向A。B B1 = A;

解决方案1* (A as B)来表示,并重写B.GetType()

解决方案2* 如果你想要b.GetType()的结果是B,放弃A的参数,请自行定义一个复制性的构造函数

class B {

public int k {get; set}

public B() {  }

public B(B b) { this.k = b.k; } //复制性的构造函数。

}

//在自行定义的方法中,创建B的实例时,Copy A的所有需要保留的参数。

B B1 = new B(A); 这样就创建了一个新的对象,类型为B,数据是从A拷贝的。

解决方案3* 不要使用继承,而使用包含A类含有一个B的引用,调用时使用A.B,这样A.B.GetType()就是B类型了。

* 总之面向对象设计思想是不允许子类转化为父类的,

如果一定要这样,不如换别的设计实现。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式