繁体   English   中英

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

[英]C# Method: How to make two sets of overloads? Edit: Parameters, not overloads

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

因此,重载如下所示:

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

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

是否可以对方法说“您要么先执行三个重载(在这里称为answerDay,answerMonth,answerYear),要么全部重载6个!”?

假设我必须以不同的方式使用相同的方法30次-那么我是否必须在同一行中产生无尽的重载流? 还是可以将其分组或过滤?

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

您有一个基础的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(

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM