C#方法:如何进行两组重载?编辑:参数,而不是重载

时间:2018-10-04 10:36:48

标签: c# class methods overloading

我有一些代码在不同的重载位置重复使用了3次。

因此,过载看起来像这样:

    int[] DateCounterReturns = CalendarDateTime.DateCounter(answerDay, answerMonth, answerYear, false, false, 0);

在另外两个地方,我必须不同地使用同一方法,因此我需要不同的重载。错误,错误,0在这里对我来说有点过头了,因为这是不必要的。

是否可以对方法说:“您要么接受三个第一个重载(在这里称为answerDay,answerMonth,answerYear),要么全部六个!”

比方说,我必须以不同的方式使用同一方法30次-然后,我是否必须在同一行中产生无尽的重载流?还是可以对其进行分组或过滤?

1 个答案:

答案 0 :(得分:1)

在这种情况下,重载就是我们调用相同方法但参数不同的地方。

您有一个基础DateCounter,它接受包含所有逻辑的6个参数,但是在某些情况下,您仅对日,月和年感兴趣,而其他3个选项仅是默认值。因此,此重载仅允许您输入这3个变量,然后在其中调用主要的基础DateCounter方法,并将默认参数作为基本的硬编码值传递。

它所要做的就是让您不必输入3个可选参数。

public int[] CalendarDateTime.DateCounter(int answerDay, int answerMonth, int answerYear)
{
   return CalendarDateTime.DateCounter(answerDay, answerMonth, answerYear, false, false, 0);
}

在这种情况下,最后3个参数是可选的。这由= {value}表示。例如对于optionalBoolA,如果您未专门为其输入值,则会将其设置为false。

然后您可以使用3个参数进行调用

CalendarDateTime.DateCounter(10, 10, 2018);

或者,您也可以填写这些值:

CalendarDateTime.DateCounter(10, 10, 2018, true, true, 1);

public int[] CalendarDateTime.DateCounter(int answerDay, int answerMonth, int answerYear, bool optionalBoolA = false, bool optionaloolB = false, int optionalIntA = 0);

在较新版本的C#中,您可以使用此缩写。与第一个相同,但是c#为您连接了它。

public int[] CalendarDateTime.DateCounter(int answerDay, int answerMonth, int answerYear) => CalendarDateTime.DateCounter(answerDay, answerMonth, answerYear, false, false, 0);

使用Visual Studio时,输入CalendarDateTime.DateCounter(

它将显示您的重载内容,使用向上和向下箭头将告诉您参数是什么。