ale*_*lex 1 c# inheritance chaining
public class Parent
{
public virtual Parent me()
{
return this;
}
}
public class Child : Parent
{
}
Run Code Online (Sandbox Code Playgroud)
new Child().me()返回一个Parent对象.我需要让它返回Child对象本身(不使用扩展和泛型)?
该me方法返回对实际对象的引用,该引用属于该类型Child,但引用的类型属于该类型Parent.
所以,你所拥有的是Parent指向该类型对象的类型的引用Child.您可以使用它来访问Child该类从该类继承的任何成员Parent.要访问Child类的成员,您必须将引用转换为类型Child:
Child c = (Child)someObject.me();
Run Code Online (Sandbox Code Playgroud)
你可以让me方法返回一个Child引用并在方法内部进行转换,但是它当然不能返回Parent对象的引用.如果不使用泛型,则每个方法只能有一种返回类型.即使您重写Child类中的方法,它仍然必须返回与类中相同的数据类型Parent.