如何在不更改构造函数的情况下创建具有重载概念的方法?
我想使用带参数的线程,但是我不确定是否需要放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
答案 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("");