Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 默认方法参数_C# - Fatal编程技术网

C# 默认方法参数

C# 默认方法参数,c#,C#,如何在不更改构造函数的情况下创建具有重载概念的方法 我想使用一个带参数的线程,但我不确定是否需要放置pratameters,因为有时我没有必要让该方法获取参数。同样,创建一个带有参数的方法是有必要的,但不是必须给出参数,我不想使用重载的概念 public void DoIt(string text){ //do something with text //do other things } DoIt(); //the method will do other things without pa

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

我想使用一个带参数的线程,但我不确定是否需要放置pratameters,因为有时我没有必要让该方法获取参数。同样,创建一个带有参数的方法是有必要的,但不是必须给出参数,我不想使用重载的概念

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

可以使用默认参数

public void DoIt(string text="")

通过这样做,当您不想使用参数时可以调用DoIt(),当您想在其中传递某个内容时可以调用DoIt(“sometstring”)

当然,重载它,让最完整的方法处理参数或不处理参数,而重载则使用适当的参数调用该方法(如果它们在功能上足够相似,它们肯定应该如此——否则称新方法为完全不同的东西,表明这一点):

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

不过,我不确定您认为构造函数是从哪里来的。

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

public void DoIt(string text = "")
{
   //do something with text 
   //do other things
}
然后您可以通过传递参数调用它,如下所示:

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

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

你为什么不想使用重载?你的问题几乎毫无意义。构造函数必须与类实例的创建有关,而不一定与方法有关。这还不清楚,你能提供更多代码和用法示例吗?请查看可选参数。关于这个问题的公认答案应该有帮助:@MostafaSarsour你不需要重载在这里,可选参数是为这样的casesaha设置的,因此没有其他方法(我必须使用重载),谢谢,但我的目的不是给它任何参数,即使是null:)是的,这就是我所说的谢谢你+1弄清楚OP到底是什么asking@MostafaSarsour您的方法调用仍在此处获取参数。
DoIt(); // equivalent to DoIt("");