C# 无法将“demo.Class1”类型的对象强制转换为“demo.Class2”类型

C# 无法将“demo.Class1”类型的对象强制转换为“demo.Class2”类型,c#,inheritance,polymorphism,C#,Inheritance,Polymorphism,我的对象无法转换为其他对象请帮助 它显示了错误: 无法将“demo.Class1”类型的对象强制转换为“demo.Class2”类型 请帮助类2是类1的子类型。这意味着您可以将Class2对象强制转换为Class1类型,但不能反过来 用不太抽象的名字来澄清:1类是动物,2类是狗。你可以说狗是动物,但动物并不总是狗。你认为这是为什么?所有的类2都可以转换为'Class1',但不是相反。你应该认真阅读多态性和类继承的基本概念,但给你一个粗略的想法:例如,每个正方形都是矩形,所以在OOP中你可以有类S

我的对象无法转换为其他对象请帮助

它显示了错误:

无法将“demo.Class1”类型的对象强制转换为“demo.Class2”类型


请帮助

类2是类1的子类型。这意味着您可以将Class2对象强制转换为Class1类型,但不能反过来


用不太抽象的名字来澄清:1类是动物,2类是狗。你可以说狗是动物,但动物并不总是狗。

你认为这是为什么?所有的类2都可以转换为'Class1',但不是相反。你应该认真阅读多态性和类继承的基本概念,但给你一个粗略的想法:例如,每个正方形都是矩形,所以在OOP中你可以有类Square:Rectangle。你的代码所要做的类似于:我有一个矩形。我现在希望它是一个正方形。怎样
public class Class1
{
    public int a;
    public string b;

    public void Hello()
    {
        Console.WriteLine("ABC");
    }
}
public class Class2 : Class1
{
    public string d;
}


class Program
{
    static void Main(string[] args)
    {
        Class1 c = new Class1();
        c.a = 1;
        c.b = "A";

        Class2 c2 = (Class2)c;

    }
}