-6

如何在不更改构造函数的情况下创建具有重载概念的方法?

我想使用带参数的线程,但我不确定是否需要放置参数表,因为有时我不需要让方法带参数。再次创建一个带参数的方法,但它不是必须提供参数,我不想使用重载概念。

public void DoIt(string text){
//do something with text //do other things
}

DoIt(); //the method will do other things without paying attention to do something with text
4

3 回答 3

3

当然,重载它,并让您最完整的方法处理参数或不处理参数,并且您的重载使用适当的参数调用那个(如果它们在功能上足够相似,那么它们绝对应该是 - 否则将新方法称为完全不同的东西,指示性其中):

public void DoIt(string text) {
  if (!string.IsNullOrEmpty(text)) {

  } else {

  }
} 

public void DoIt() {
  DoIt(""); // or DoIt(null);
}

您还可以在以后的 C# 版本中使用可选参数,但这不是重载:它允许您为参数参数指定默认值,然后在调用中省略此类参数。但是,这不是重载,并且您必须确保所有可选参数都是签名的尾随参数。

不过,我不确定您认为构造函数在哪里出现。

于 2013-04-03T13:37:01.550 回答
2

您可以使用默认参数

public void DoIt(string text="")

通过这样做,您可以在不想使用参数时调用 DoIt() 或在想要传递某些东西时调用 DoIt("someString")

于 2013-04-03T13:36:25.430 回答
1

在 c# 4 及更高版本中,您可以为参数指定默认值,因此无需在调用站点指定它们:

public void DoIt(string text = "")
{
   //do something with text 
   //do other things
}

然后您可以通过传递参数来调用它,如下所示:

DoIt("parameterValue");

或者不传递参数,在这种情况下,将使用方法定义中指定的值:

DoIt(); // equivalent to DoIt("");
于 2013-04-03T13:38:38.523 回答