मैंने Animal को Dog पर कास्ट करने का प्रयास किया, लेकिन यह विफल रहा। इस विफलता का कारण क्या है?

class Animal
{
    private readonly string name;
    public Animal(string name) => this.name = name;
    public virtual string Greet() => $"Animal's {name}";
}

class Dog : Animal
{
    public Dog(string name) : base(name) { }
    public override string Greet() => $"Dog's {base.Greet()}";
}

class Program
{
    static void Main()
    {
        Animal a = new Animal("Hello World");
        Dog d = a as Dog;

        if (d == null)
            Console.WriteLine("Cast failed.");
        else
            Console.WriteLine(d.Greet());
    }
}
c#
-2
Money Oriented Programmer 24 जून 2019, 19:06

1 उत्तर

सबसे बढ़िया उत्तर

क्योंकि a एक जानवर है और कुत्ता नहीं है। आपने एक जानवर को तुरंत चालू कर दिया।

निम्नलिखित काम करेगा (जानवर के बजाय कुत्ते का उदाहरण बनाना):

class Program
{
    static void Main()
    {
        Animal a = new Dog("Hello World");
        Dog d = a as Dog;

        if (d == null)
            Console.WriteLine("Cast failed.");
        else
            Console.WriteLine(d.Greet());
    }
}
3
Fortega 24 जून 2019, 16:10