默认方法参数

时间:2013-04-03 13:34:49

标签: c#

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

我想使用带参数的线程,但是我不确定是否需要放pratameter,因为有些时候我不需要让方法接受参数。再次是在那里创建一个带参数的方法,但它不是必须给出参数,我不想使用重载概念。

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

3 个答案:

答案 0 :(得分:3)

当然,重载它,并让你的最完整的方法处理参数或没有,你的重载调用具有适当参数的那个(如果它们在功能上足够相似,它们肯定应该是 - 否则将新方法称为完全不同的东西,表示:)

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

  } else {

  }
} 

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

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

我不确定你认为构造函数在哪里。

答案 1 :(得分:2)

您可以使用默认参数

public void DoIt(string text="")

通过执行此操作,当您不想使用参数或DoIt(“someString”)时,您可以调用DoIt()

答案 2 :(得分:1)

在c#4及以上版本中,您可以指定参数的默认值,因此无需在呼叫站点指定它们:

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

然后你可以调用它传递一个参数,如下所示:

DoIt("parameterValue");

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

DoIt(); // equivalent to DoIt("");