c# - C#继承和链接问题

标签 c# inheritance chaining

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/

相关文章:

c# - 使用 C# 从 URL 反序列化 XML

c# - 高效处理超宽但不是那么高的位图?

javascript - __proto__ 与 constructor.prototype 有何不同?

java - 扩展内部类和扩展嵌套类之间的区别?

Java继承和泛型问题

ios - 在 SWIFT 中的函数链中间等待闭包完成

javascript - CreateJS:TweenJS 时间线补间多次更改属性而无需链接

c# - .Net MVC : need to display a list of users from AspNetUser table

c# - 具有 IntegralHeight 的 ComboBox 的默认 DropDown 高度为 TRUE

hadoop - Hadoop mapreduce设计/路由映射器和化简器一次完成