You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法修改底层API时,带out参数的连接状态检测if-else逻辑优化

方案1:C# 7.0+ 语法简化(无需额外封装)

利用C# 7及以上版本支持的out变量内联声明和弃元特性,直接合并变量声明到逻辑中,不用单独提前声明变量,代码更简洁:

// 写法1:用逗号运算符直接合并到if条件
if (IsConnected(out bool isConnected), isConnected)
{
    OperateOnStream();
}
else
{
    Connect();
}

如果不习惯逗号运算符,也可以用弃元接收无意义的返回值,写法更易读:

// 写法2:弃元接收无用返回值,逻辑更直观
_ = IsConnected(out bool isConnected);
if (isConnected)
{
    OperateOnStream();
}
else
{
    Connect();
}

注:这里的bool变量是栈上分配的极小值,JIT编译优化后不会产生任何额外性能开销,你感知到的「多余变量、效率低」只是语法层面的书写差异,运行时和原生逻辑性能完全一致。

方案2:封装扩展方法(还原最理想的调用逻辑)

如果要批量使用这个检测逻辑,直接针对API所属类封装扩展方法即可,完全不需要修改底层API:

public static class ConnectionExtensions
{
    // 替换参数类型为你调用IsConnected的实例的实际类型
    public static bool CheckConnected(this YourConnectionClass instance)
    {
        // 丢弃无意义的Result返回值
        _ = instance.IsConnected(out bool connected);
        return connected;
    }
}

封装完成后就可以直接使用你最初设想的逻辑:

if (connection.CheckConnected())
{
    OperateOnStream();
}
else
{
    Connect();
}

注意事项

如果后续底层API调整,Result类型新增了错误状态返回,只需要修改扩展方法内部的逻辑做异常处理即可,上层调用代码不需要改动,可维护性更高。

内容的提问来源于stack exchange,提问作者jam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 10:27:03