我有一些代码在不同的重载位置重复使用了3次。
因此,过载看起来像这样:
int[] DateCounterReturns = CalendarDateTime.DateCounter(answerDay, answerMonth, answerYear, false, false, 0);
在另外两个地方,我必须不同地使用同一方法,因此我需要不同的重载。错误,错误,0在这里对我来说有点过头了,因为这是不必要的。
是否可以对方法说:“您要么接受三个第一个重载(在这里称为answerDay,answerMonth,answerYear),要么全部六个!”
比方说,我必须以不同的方式使用同一方法30次-然后,我是否必须在同一行中产生无尽的重载流?还是可以对其进行分组或过滤?
答案 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(
它将显示您的重载内容,使用向上和向下箭头将告诉您参数是什么。