gpt4 book ai didi

c# - 方法重载和多态性

转载 作者:可可西里 更新时间:2023-11-01 08:31:41 24 4
gpt4 key购买 nike

class Program
{
static void Main(string[] args)
{
List<A> myList = new List<A> {new A(), new B(), new C()};

foreach (var a in myList)
{
Render(a);
}

Console.ReadKey();
}

private static void Render(A o)
{
Console.Write("A");
}

private static void Render(B b)
{
Console.Write("B");
}

private static void Render(C c)
{
Console.Write("C");
}
}

class A
{

}

class B : A
{

}

class C : A
{

}

输出为:AAA

是否有可能以某种方式使用方法重载,以便输出为:ABC?

最佳答案

如果您使用的是 C# 4,则可以使用动态类型:

foreach (dynamic a in myList)
{
Render(a);
}

在静态类型中,重载解析是在编译时执行的,而不是在执行时执行的。

对于在决策时选择的实现,您要么必须使用覆盖而不是重载,要么像上面那样使用动态类型。

关于c# - 方法重载和多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4921666/

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