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有值,怎么办
展开
1个回答
展开全部
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类型了。
* 总之面向对象设计思想是不允许子类转化为父类的,
如果一定要这样,不如换别的设计实现。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询