C#中父类和子类的转换问题?

GritH2O 2008-08-04 11:05:08
我在一个类中引用一个父类,怎么才能将这个父类的实例转变成我传统过来的子类的实例呢?
比如:
class A:B
{

}

class C
{
B a;
c(B a)
{
this.a = a;
}
public void say()
{
//todo 这里将a转换为A的实例 应该怎么做
}
}

class test
{
public static void Main()
{
A a = new A();
C c = new C(a);
}
}
...全文
185 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
GritH2O 2008-08-04
  • 打赏
  • 举报
回复
to chenyijiu
这里只是一个简单的例子说明。
其实我要调用的是具体传递的子类的自己的属性和方法,这些方法和属性是在父类中没有声明的。
我不知道应该怎么做
GritH2O 2008-08-04
  • 打赏
  • 举报
回复
不能用强制类型转换的。
因为有很多个类继承之B这个类。
传递的时候也不一定是哪个类,所以我想有没有什么方法能用它自己的类型来转变。
我现在只是能通过getType获得它的类型,但是不知道怎么转换成自己的类型。
比如
class A:B
{

}
class D:B
{

}
class F:B
{

}

class C
{
B a;
c(B a)
{
this.a = a;
}
public void say()
{
//todo 这里将a转换为A D F的实例 应该怎么做 不应该是强制类型转换的
}
}

class test
{
public static void Main()
{
A a = new A();
C c = new C(a);
c.say();
D d = new D();
C cc = new C(d);
cc.say();
F f = new F();
C ccc = new C(f);
ccc.say();
}
}


chenyijiu 2008-08-04
  • 打赏
  • 举报
回复
这里用多态的形式比较好吧,在方法say()中调用父类类的虚方法就是执行子类的
zzyhuian06142 2008-08-04
  • 打赏
  • 举报
回复
class A:B
{

}

class C
{
B a;
c(B a)
{
this.a = a;
}
public void say(A aa)
{
if(a!=null)
{
a = aa;
}
}
}

class test
{
public static void Main()
{
A a = new A();
C c = new C(a);
c.say(a);

}
}
我姓区不姓区 2008-08-04
  • 打赏
  • 举报
回复
public void say()
{
//todo 这里将a转换为A的实例 应该怎么做
A a2 = (A)a;
}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧