kon*_*ski 33 c# parameter-passing out-parameters
我们假设我有一个带out参数的函数,但是我不需要它的值.如果给定结果将丢弃,有没有办法传递没有实际参数?
编辑:
虽然这个问题已被选为可选输出参数的重复, 但只有从方法创建者的角度来看才是这样.如果您是该方法的用户,那么您不想让参数成为可选参数,只是在不声明变量的情况下不使用它.虽然这是不可能的,但使用C#7.0可以在方法调用中声明它.所以代替:
int unusedValue;
TryGetValue("key", out unusedValue);
Run Code Online (Sandbox Code Playgroud)
你得到:
TryGetValue("key", out int unusedValue);
Run Code Online (Sandbox Code Playgroud)
甚至:
TryGetValue("key", out _);
Run Code Online (Sandbox Code Playgroud)
这应该作为答案添加,但是:
Jus*_*gan 23
你不能这样做,但是没有规则说你必须使用返回的值.您可以简单地传递一个永远不会再使用的临时变量.
C#4.0允许可选参数,但out参数不能是可选的.
编辑: BTW,你也可以重载方法:
int DoStuff()
{
int temp;
return DoStuff(out temp);
}
int DoStuff(out outParam)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
虽然您实际上无法使out参数可选,但您可以简单地为函数创建一个重载而不使用out参数,这样就不需要创建临时变量.
public void DoSomething(int param1, out int param2)
{
/* Method work here */
}
public void DoSomething(int param1)
{
int temp;
DoSomething(param1, out temp);
}
Run Code Online (Sandbox Code Playgroud)