有没有办法省略参数?

假设我有一个带参数的函数,但是我不需要它的值。 如果给定结果将丢弃,有没有办法传递没有实际参数?

编辑:

虽然这个问题已经被投票选为可选输出参数,但只有从方法创建者的角度来看才是这样。 如果您是该方法的用户,那么您不想让参数成为可选参数,只是在不声明变量的情况下不使用它。 虽然这是不可能的,但使用C#7.0可以在方法调用中声明它。 所以代替:

 int unusedValue; TryGetValue("key", out unusedValue); 

你得到:

 TryGetValue("key", out int unusedValue); 

甚至:

 TryGetValue("key", out _); 

这应该作为答案添加,但是:

  • 我不能为这个问题这样做,因为它被标记为一个傻瓜;
  • 这个问题的问题似乎是一个实际上要求不同的东西。

你不能这样做,但没有规则说你必须使用返回的值。 您只需传递一个永远不会再使用的临时变量。

C#4.0允许可选参数,但out参数不能是可选的。

编辑: BTW,你也可以重载方法:

 int DoStuff() { int temp; return DoStuff(out temp); } int DoStuff(out outParam) { //... } 

虽然您实际上无法使out参数可选,但您可以简单地为函数创建一个重载而不使用out参数,这样就不需要创建临时变量。

 public void DoSomething(int param1, out int param2) { /* Method work here */ } public void DoSomething(int param1) { int temp; DoSomething(param1, out temp); } 

不确定C#,但在VB.Net中,您只需将常量传递给输出(byref)参数即可。 因此,如果您有一个整数,作为输出参数,您不必传入实际变量,您可以传入0或任何其他有效整数。 对于Objects,包括字符串,你只能传入Nothing(C#中为Null),一切正常。 我不确定变量的存储位置,可能只是在您传入的任何其他参数中的堆栈中,并且当函数退出时它会消失。