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,但在第一个版本中,我希望它接收用户输入的值,因此目前尚未初始化。

如果以前有人问过这个问题,我很抱歉,但经过一个小时的搜索,我没有找到我想要的结果。如果我在这里遗漏了什么,请告诉我,我会尽力给出更好的描述或更多的细节。

C#-创建一个重载方法,其中一个int使用固定值,另一个接收值

问题是您有两个具有相同签名的方法。对此,最简单的修复方法就是从第二个重载中删除最后一个参数,并使用最后一个自变量的硬编码值调用第一个重载:

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
}