gpt4 book ai didi

c# - C# 中不能重载的返回类型

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:05 24 4
gpt4 key购买 nike

为什么不能像 Ienumerator 那样重载具有返回类型的函数?

此类型的处理方式是否不同于其他允许函数重载的类型?

最佳答案

解析重载方法时不考虑返回类型。 IEnumerator 没有什么特别之处。整个类型系统都是一样的。如果你想从一个方法返回不同的类型,你需要声明一个基类或接口(interface)并返回该类型的实例。之后,您可以检查对象的实际类型,转换它并执行特定操作。

public interface IFoo
{
}

public class Bar : IFoo
{
public void BarMethod() {}
}

public class Biz : IFoo
{
public void BizMethod() {}
}

您可以在其他地方声明这样的方法:

public class C
{
public IFoo M(int i)
{
return (i == 0) ? new Bar() : new Biz();
}
}

以及用法:

C c = new C();
var foo = c.M(1);
var barFoo = foo as Bar;
if (barFoo != null)
{
barFoo.BarMethod();
}
else
{
var bizFoo = foo as Biz;
if (bizFoo != null)
{
bizFoo.BizMethod();
}
}

关于c# - C# 中不能重载的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33064094/

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