Der*_*ker 19 c# parameters nullable
我有一个方法有几个覆盖.在其中一个更扩展的覆盖中,我想返回一个OUT参数,但不是在我更简单的覆盖中.例如:
public bool IsPossible(string param1, int param2)
public bool IsPossible(string param1, int param2, out bool param3)
Run Code Online (Sandbox Code Playgroud)
我目前实现这一目标的方式是这样的:
public bool IsPossible(string param1, int param2) {
bool temp;
return IsPossible(param1, param2, out temp);
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来实现这一目标?我(或我应该)可以使用null-out参数吗?
aar*_*lin 12
从 C# 7.0 开始,您可以将 Discard ( _)传递到该方法中:
return IsPossible(param1, param2, out _);
Run Code Online (Sandbox Code Playgroud)
请参阅:https : //docs.microsoft.com/en-us/dotnet/csharp/discards
操作:
我可以(或应该)使用可为空的输出参数吗?
可为空的 out 参数对您没有多大好处。这个:
public bool IsPossible( string param1, int param2, out bool? param3 )
{
...
}
Run Code Online (Sandbox Code Playgroud)
不做param3可选。它改变了 what param3 is的语义。A bool?(aka Nullable<bool>) 将域param3从 2 个值 ( trueand ) 扩大false到 3,添加了第三个值 ( null),通常被解释为缺失/未知。调用者仍然必须提供所有三个参数。
IsPossible()通过提供重载来重载——“不关心”场景——丢弃引用参数是正确的解决方案。
| 归档时间: |
|
| 查看次数: |
18851 次 |
| 最近记录: |