gpt4 book ai didi

c# - 重载是向同一函数添加不同参数的唯一方法吗?

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

我有 2 个函数执行完全相同的操作;因为底层 API 有一个重载函数,它接受一个字符串或一个 int。

因为我正在使用这个函数,所以我需要用一个字符串或一个整数来调用这个函数。重载是这样做的唯一方法吗?除了函数的签名之外,我复制了代码;这似乎是在浪费代码。

public void taketwo(int value1, int value2)
{
// Other operations happen here
baseAPI.getvalues(value1, value2);
}

public void taketwo(string val1_str, string val2_str)
{
// Other operations happen here
baseAPI.getvalues(val1_str, val2_str);
}

我想起了泛型函数;但我不确定这是否适用于这种情况;我过去从未使用过它们,在开始之前,我认为值得先四处打听一下。

最佳答案

可以在这里使用动态类型:

// I don't recommend you do this - see later
public void TakeTwo(dynamic value1, dynamic value2)
{
baseAPI.GetValues(value1, value2);
}

然后将在执行时执行对 GetValues 调用的重载解析。

但是:

  • 没有编译时检查您对 TakeTwo 的调用是否有效
  • 效率较低(可能重要也可能不重要;在大多数情况下第一点更重要)

您谈论的是复制代码,但在您展示的示例中,所有 代码都是方法调用。如果方法中还有其他真正通用的代码,我建议提取该通用代码并在两个重载中调用它:

public void TakeTwo(int value1, int value2)
{
CommonCode();
baseAPI.GetValues(value1, value2);
}

public void TakeTwo(string value1, string value2)
{
CommonCode();
baseAPI.GetValues(value1, value2);
}

private void CommonCode()
{
// Things you want to do in both methods
}

关于c# - 重载是向同一函数添加不同参数的唯一方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34917158/

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