gpt4 book ai didi

C# ToString继承

转载 作者:行者123 更新时间:2023-11-30 13:43:11 25 4
gpt4 key购买 nike

我有一个问题(这是我的错,我只是无法发现我做错了什么)“ToString”没有调用正确的方法...

public class ClassA
{
public override ToString()
{
return "Hello, I'm class A.";
}
}

public class ClassB : ClassA
{
public override ToString()
{
return "Hello, I'm class B.";
}
}

ClassB myClassB = new ClassB();
List<ClassA> myClassAList = new List<ClassA>();

myClassAList.Add((ClassA) myClassB);
ClassA tempClassA = myClassAList[0];
Console.WriteLine(tempClassA.ToString());

我从“ClassB”而不是“ClassA”获取“ToString”我做错了什么?

最佳答案

您没有做错任何事情——这就是多态虚拟方法的工作原理。当您将 ClassB 放入 ClassA 引用的集合中时,它仍然是 ClassB 对象。如果对象确实属于 ClassB,则调用 .ToString() 将始终找到 ClassB.ToString()。

关于C# ToString继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/697874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com