gpt4 book ai didi

c# - 重载方法调用重载方法

转载 作者:行者123 更新时间:2023-11-30 14:05:17 28 4
gpt4 key购买 nike

我正在编写一个方法,它在其中调用另一个重载方法。我只想写一个外部方法,因为外部方法的参数被传递给内部方法。有办法做到这一点吗?

我试过使用泛型,但我对此了解不够,所以它不起作用:

public void OuterMethod<T>(T parameter)
{
InnerMethod(parameter); // InnerMethod accepts an int or a string
}

我知道我可以做到:

public void OuterMethod(string parameter)
{
InnerMethod(parameter);
}

public void OuterMethod(int parameter)
{
InnerMethod(parameter);
}

但我宁愿以正确的方式执行此操作,而不是复制/粘贴代码。实现此目标的最佳方法是什么?

最佳答案

您可以在 C++ 中执行此操作,但不能在 C# 中执行(除非内部方法也可以是通用的而不是重载)。


或者(如果您不接受“否”作为答案),您可以在类型上执行运行时切换,例如...

public void OuterMethod(object parameter)
{
if (parameter is int)
InnerMethod((int)parameter);
else if (parameter is string)
InnerMethod((string)parameter);
else
throw new SomeKindOfException();
}

...但显然这是运行时检查,而不是编译时检查。

But I'd rather do this the right way instead of copying/pasting code.

您也可以编写软件来编写您的外部方法(例如使用 System.CodeDom 类)而不是手动编写它们,但这可能比它的值(value)更麻烦。

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

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