有没有办法省略参数?
假设我有一个带参数的函数,但是我不需要它的值。 如果给定结果将丢弃,有没有办法传递没有实际参数?
编辑:
虽然这个问题已经被投票选为可选输出参数,但只有从方法创建者的角度来看才是这样。 如果您是该方法的用户,那么您不想让参数成为可选参数,只是在不声明变量的情况下不使用它。 虽然这是不可能的,但使用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),一切正常。 我不确定变量的存储位置,可能只是在您传入的任何其他参数中的堆栈中,并且当函数退出时它会消失。