C# 3.0 派生类不能引用父类

C# 3.0 派生类不能引用父类,c#-3.0,C# 3.0,有人能解释为什么会这样吗?记忆中发生了什么?你似乎误解了继承 每个女儿和每个儿子都是父亲。这就是为什么可以将这两个变量安全地分配给父变量的原因。子类不能删除属性/方法,只能添加它们,这就是为什么它可以确保它总是工作的原因 但是,如果您有一个Father的实例,并希望将其分配给一个Son变量,则无法确定该实例是否是一个Son并且实际具有所需的所有属性。父实例还可以包含与子实例不兼容的子实例。这就是为什么编译器不能隐式地转换它们,但作为程序员,您可以显式地转换它们。在提出具体问题之前,您可能想先了解

有人能解释为什么会这样吗?记忆中发生了什么?

你似乎误解了继承

每个
女儿
和每个
儿子
都是
父亲
。这就是为什么可以将这两个变量安全地分配给
父变量的原因。子类不能删除属性/方法,只能添加它们,这就是为什么它可以确保它总是工作的原因


但是,如果您有一个
Father
的实例,并希望将其分配给一个
Son
变量,则无法确定该实例是否是一个
Son
并且实际具有所需的所有属性。
父实例
还可以包含与子实例不兼容的
子实例
。这就是为什么编译器不能隐式地转换它们,但作为程序员,您可以显式地转换它们。

在提出具体问题之前,您可能想先了解OOP的一些基本概念。
class Program
{
    static void Main(string[] args)
    {

        Father objFather = new Son(); //Ok compiles

        Son objSon1 =  new Father(); //Comile time error : Cannot implicitly convert type

        Son objSon = (Son)new Father();  //Run time error
        Console.ReadLine();
    }
}

class Father
{
    public void Read()
    {

    }

}

class Daughter:Father
{

}

class Son:Father
{

}