C#获取子类属性值
我试图做到这一点:C#获取子类属性值,c#,oop,inheritance,polymorphism,C#,Oop,Inheritance,Polymorphism,我试图做到这一点: class A { //attibutes } class B : A { public int classBAttribute = 5; // other attributes and methods } 我的问题是,如果我有一个类的实例,我如何获得B类的实例或访问他的属性 B b = new B(); Application.Add(b); //other form A a = Application.GetA(); B b = getBFrom
class A {
//attibutes
}
class B : A {
public int classBAttribute = 5;
// other attributes and methods
}
我的问题是,如果我有一个类的实例,我如何获得B类的实例或访问他的属性
B b = new B();
Application.Add(b);
//other form
A a = Application.GetA();
B b = getBFromA(a);// ??? Note: B b = a as B; does't work i tried
我的问题是,如果我有一个类的实例,如何获得
B类的实例或访问他的属性
B b = new B();
Application.Add(b);
//other form
A a = Application.GetA();
B b = getBFromA(a);// ??? Note: B b = a as B; does't work i tried
您的程序如何知道A的实例实际上是B类型的
B的一个实例可以用作A(因为B是A的一个特化),但不可能相反
我的问题是,如果我有一个类的实例,如何获得
B类的实例或访问他的属性
B b = new B();
Application.Add(b);
//other form
A a = Application.GetA();
B b = getBFromA(a);// ??? Note: B b = a as B; does't work i tried
您的程序如何知道A的实例实际上是B类型的
B的实例可以用作A(因为B是A的特化),但不可能使用相反的方法。您不能这样做——通常没有神奇的方法从基本对象创建派生对象
要启用这样的方案类B
,需要定义一个接受a
参数的构造函数:
public B(A a)
{
// do whatever makes sense to create a B from an A
}
然后您可以将其用作
var b = new B(a);
当然在此之后,a
和b
将是完全不同的对象;改变一个不会影响另一个
为了避免混淆,您还应该正确使用术语:classBAttribute
不是一个,而是一个。您不能这样做——通常没有神奇的方法从基本对象创建派生对象
要启用这样的方案类B
,需要定义一个接受a
参数的构造函数:
public B(A a)
{
// do whatever makes sense to create a B from an A
}
然后您可以将其用作
var b = new B(a);
当然在此之后,a
和b
将是完全不同的对象;改变一个不会影响另一个
为了避免混淆,您还应该正确使用术语:
classBAttribute
不是一个,而是一个。也许我不完全理解问题或答案,但是
将A
强制转换为B
应该是可行的(只要A
实际上也是B
)
也许我不完全理解这个问题或答案,但是 将
A
强制转换为B
应该是可行的(只要A
实际上也是B
)
好。您不能将A向上转换为B。简单。此外,为了将来的参考,您所指的属性称为类成员。在.NET语言中,属性是完全不同的嗯,我不知道正确的te概念,我更喜欢算法:)这就是为什么我要指出它以供将来参考。我不是在责骂谢谢你的帮助:)好的。您不能将A向上转换为B。简单。此外,为了将来的参考,您所指的属性称为类成员。在.NET语言中,属性是完全不同的嗯,我不知道正确的te概念,我更喜欢算法:)这就是为什么我要指出它以供将来参考。我不是在责骂谢谢你的帮助:)我想我必须使用数据库,因为没有数据库我无法从a中获取B。谢谢你的回答。我想我必须使用数据库,因为没有数据库我无法从a中获取B。谢谢你的回答。这就是为什么我问到这是否可能:)。谢谢你的回答。这就是为什么我想知道这是否可能:)。谢谢你的回答。我试着让他不工作B的自定义字段不是继承自A@AntonioPapa将对象强制转换为B后,即可访问该字段。“不起作用”是什么意思?这意味着b为空,当我将a转换为bI时该值返回,试图转换他不起作用b的自定义字段未从中继承A@AntonioPapa将对象强制转换为B后,即可访问该字段。“不起作用”是什么意思?它意味着b为空,当我将a转换为b时,该值返回