带函数输出参数的 if-else 语句逻辑

If-else statement logic with function out parameter

我正在循环中工作以测试是否存在外部连接。如果连接确实存在,那么我想对其进行操作,拉回信息。如果没有,那么我想打开连接。我假设逻辑会去:

if (IsConnected()) {
    OperateOnStream();
} else {
    Connect();
}

问题是定义的接口是:

public Result IsConnected(out bool connected)

return类型,Result是在别处定义的class,实际上是在IsConnected内部实例化的,没有有用的信息。

目前我有

bool isConnected;
IsConnected(out isConnected);
if (isConnected) {
    OperateOnStream();
} else {
    Connect();
}

我的问题是:属于周期性运行的函数,效率比较低。它创建了一个不必要的变量,并且相当不优雅。我无法更改基础 API。有没有更好的办法?提前致谢。

你可以这样做:

if (IsConnected(out bool connected) != null && connected)
{
    OperateOnStream();
}
else
{
    Connect();
}

但它并没有好多少,如果有的话。

或者这样:

bool isConnected() => IsConnected(out bool connected) != null && connected;

if (isConnected())
{
    OperateOnStream();
}
else
{
    Connect();
}

归根结底,原始代码并不是“相当低效”。