C#-创建一个重载方法,其中一个int使用固定值,另一个接收值
本文关键字:一个 另一个 重载 创建 方法 C#- int | 更新日期: 2023-09-27 18:26:57
我试图将重载方法的值设置为1,但我希望原始方法保持未初始化状态。
public void Method1(string string1, decimal decimal1, int int1)
{
}
public void Method1(string string1, decimal decimal1, int int1 = 1)
{
}
我得到以下错误:
> Error 2 Type 'Application1.Application' already defines a member called 'Method1' with the same parameter types
它似乎不喜欢int int1 = 1
。我希望int1
在该方法的第二个版本中始终等于1,但在第一个版本中,我希望它接收用户输入的值,因此目前尚未初始化。
如果以前有人问过这个问题,我很抱歉,但经过一个小时的搜索,我没有找到我想要的结果。如果我在这里遗漏了什么,请告诉我,我会尽力给出更好的描述或更多的细节。
问题是您有两个具有相同签名的方法。对此,最简单的修复方法就是从第二个重载中删除最后一个参数,并使用最后一个自变量的硬编码值调用第一个重载:
public void Method1(string string1, decimal decimal1, int int1)
{
// Whatever you actually want to do here
}
public void Method1(string string1, decimal decimal1)
{
Method1(string1, decimal1, 1);
}
(如果你的两种方法不打算达到相同的结果,你应该给它们起不同的名字。)
如果您想使用可选参数,只需使用一种方法即可:
public void Method1(string string1, decimal decimal1, int int1 = 1)
{
// Whatever...
}
// Look ma, no second overload
只需将参数从您想要的固定值的重载中去掉,并初始化方法体中的变量:
public void Method1(string string1, decimal decimal1, int int1)
{
}
public void Method1(string string1, decimal decimal1)
{
int int1 = 1;
//Do things
}