作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
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/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!