C# 要么返回 false,要么什么都不做

标签 c# .net if-statement return

我想知道是否有一种方法可以不必重复相同的if 构造,而是调用StatusCheck()。成功时不能返回真。 有人知道这个问题的更好标题吗?

bool Enable()
{
    if (!GetStatus(ref status)) { Trace.WriteLine("Error"); return false; }
    // do stuff

    if (!GetStatus(ref status)) { Trace.WriteLine("Error"); return false; }
    // do more stuff

    if (!GetStatus(ref status)) { Trace.WriteLine("Error"); return false; }
    // do even more stuff

    // 6 more times the above

    return true;
}

最佳答案

您可以创建一个 CheckStatus() 方法,如果状态无效则抛出异常,然后在您的 Enable() 方法中处理该异常:

public void CheckStatus(int status)
{
    if (!IsValidStatus(status)) {
        throw new InvalidStatusException(status);
    }
}

public bool Enable()
{
    try {
        CheckStatus(status);
        // do stuff

        CheckStatus(status);
        // do more stuff

        CheckStatus(status);
        // do even more stuff

        // 6 more times the above

        return true;

    } catch (InvalidStatusException) {
        Trace.WriteLine("Error");
        return false;
    }
}

关于C# 要么返回 false,要么什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4793405/

相关文章:

C# 同步进行异步调用

c# - 使用 PrintDocument 打印多页

.net - Windows 窗体 "System.ArgumentException: Parameter is not valid"来自 Font.GetHeight(图形图形)

python - 比较列表;返回唯一列表。 - Python

c# - 为绕过 token 触发 hCaptcha 回调函数

javascript - 如何知道哪个域使用 JS 向我的 C# 操作发送请求

c# - 如何在不知道所有参数的情况下动态调用对象的构造函数?

c# - 让 ListBox 中的项目取决于在 ComboBox 中选择的项目

class - yii2详细 View 条件行类

javascript - 有人可以看看我遇到问题的一些 jQuery 吗?(setInterval,fadeIn/fadeOut)