带有函数输出参数

问题描述

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

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

问题是定义的接口是:

public Result IsConnected(out bool connected)

返回类型,Result 是在别处定义的类,实际上是在 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();
}

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...