public class Parent
{
public virtual Parent me()
{
return this;
}
}
public class Child : Parent
{
}
新的Child()。me()返回一个Parent对象。我需要什么返回子对象本身(不使用扩展名和泛型)?
最佳答案
me
方法返回对实际对象的引用,该引用的类型为Child
,但是引用的类型为Parent
。
因此,您拥有的是类型为Parent
的引用,该引用指向类型为Child
的对象。您可以使用它来访问Child
类从Parent
类继承的任何成员。要访问Child
类的成员,必须将引用强制转换为类型Child
:
Child c = (Child)someObject.me();
您可以使
me
方法返回一个Child
引用并在该方法内部进行强制转换,但是,将返回对Parent
对象的引用当然是行不通的。如果不使用泛型,则每个方法只能有一个返回类型。即使您覆盖Child
类中的方法,它仍然必须返回与Parent
类中相同的数据类型。
关于c# - C#继承和链接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3142922/