首页 > 解决方案 > 带有函数输出参数的 if-else 语句逻辑

问题描述

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

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

问题是定义的接口是:

public Result IsConnected(out bool connected)

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

目前我有

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

我的问题是:属于定期运行的功能,这是相当低效的。它创建了一个不必要的变量,并且相当不雅。我无法更改底层 API。有没有更好的办法?提前致谢。

标签: c#out

解决方案


你可以这样做:

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

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

或这个:

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

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

归根结底,原始代码无论如何都不是“相当低效”的。


推荐阅读