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

C#方法:如何生成两组重载?编辑:参数,而不是重载,c#,class,methods,overloading,C#,Class,Methods,Overloading,我有一些代码,我用不同的重载重复使用其中的一部分3次 因此,重载如下所示: int[] DateCounterReturns = CalendarDateTime.DateCounter(answerDay, answerMonth, answerYear, false, false, 0); 另外两个地方,我必须以不同的方式使用相同的方法,因此我需要不同的重载。false,false,0在这里对我来说有点过头了,因为它不是必需的 是否可以对方法说“您要么接受前三个重载(这里称为ans

我有一些代码,我用不同的重载重复使用其中的一部分3次

因此,重载如下所示:

    int[] DateCounterReturns = CalendarDateTime.DateCounter(answerDay, answerMonth, answerYear, false, false, 0);
另外两个地方,我必须以不同的方式使用相同的方法,因此我需要不同的重载。false,false,0在这里对我来说有点过头了,因为它不是必需的

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


假设我必须以不同的方式使用相同的方法30次-然后我是否必须在同一行中进行无休止的重载?或者可以以某种方式对其进行分组或过滤?

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

public int[] CalendarDateTime.DateCounter(int answerDay, int answerMonth, int answerYear)
{
   return CalendarDateTime.DateCounter(answerDay, answerMonth, answerYear, false, false, 0);
}
您有一个基础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}表示。e、 g.对于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时(


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

也许您应该解释真正的问题是什么,而不是如何解决它?或者为什么不使用
DateTime
甚至自定义类(单个)参数?在整个解释过程中,您将重载与参数混淆在一起。同一行中的重载层出不穷。您确定您在这里谈论的是重载吗。看起来像可选参数。从您的问题来看,您不清楚重载是什么意思……方法重载是指您有两个或多个方法的情况使用相同的名称但不同的参数。现在我们已经弄清楚了这一部分,请重新表述您的问题。我想您正在寻找可选参数/默认参数谢谢:)我打赌所有这些都会起作用,但我不太擅长编码,无法理解为什么它们会起作用,或者仅仅从这段代码中它们将如何起作用。能解释一下每种方法是如何工作的吗?是的,谢谢!我来试试看哪一种效果最好。