问题描述
我在循环内工作以测试是否存在外部连接。如果连接确实存在,那么我想对其进行操作,拉回信息。如果没有,那么我想打开连接。我认为逻辑会这样:
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();
}
归根结底,原始代码无论如何都不是“效率低下”。