C# 4.0 C#重写方法并可选地抛出异常,是否需要返回值?

C# 4.0 C#重写方法并可选地抛出异常,是否需要返回值?,c#-4.0,C# 4.0,我在C#4.0中有一种方法是这样的: protected override bool _update() { if (this.Notes == "") throw new Exception("Some message..."); else base._update(); } 编译器抱怨说,如果要执行此操作,并非所有代码路径都返回值: protected override bool

我在C#4.0中有一种方法是这样的:

    protected override bool _update()
    {
        if (this.Notes == "")
            throw new Exception("Some message...");
        else
            base._update();
    }
编译器抱怨说,如果要执行此操作,并非所有代码路径都返回值:

    protected override bool _update()
    {
        throw new Exception("Some message...");
    }
它编译得很好。有没有推荐的解决方法?看起来它们真的没有什么不同,如果一种情况下的异常足以不返回值,那么在另一种情况下为什么不呢?

试一试:)

您只需要返回base的输出。_update(),仅仅运行它是不够的,因为不会返回值。

尝试一下:)


您只需要返回base的输出。_update(),仅运行它是不够的,因为不会返回值。

因为如果
this.Notes!=“”
,则您的方法将在不返回值的情况下退出。你是说这个吗

protected override bool _update()
{
    if (this.Notes == "")
        throw new Exception("Some message...");
    else
        return base._update();
}

因为如果
this.Notes!=“”
,则您的方法将在不返回值的情况下退出。你是说这个吗

protected override bool _update()
{
    if (this.Notes == "")
        throw new Exception("Some message...");
    else
        return base._update();
}

该方法需要一个布尔类型的返回值,但这里没有返回任何内容。无论发生什么情况,“异常”情况都将退出函数。您需要执行以下操作:

如果(…) .. 其他的 { 返回基数。_update();
}

该方法需要一个布尔类型的返回值,但您在这里没有返回任何内容。无论发生什么情况,“异常”情况都将退出函数。您需要执行以下操作:

如果(…) .. 其他的 { 返回基数。_update();
}这是因为你没有这样做 “返回基数。\u更新” 另外,请遵循标准命名约定作为建议:)

如果stmt出现问题,请避免悬挂,包括

protected override bool Update() { if (this.Notes == "") { throw new Exception("Some message..."); } else { return base.Update(); } } 受保护的覆盖布尔更新() { 如果(this.Notes==“”) { 抛出新异常(“某些消息…”); } 其他的 { 返回base.Update(); } }
这是因为你没有这样做 “返回基数。\u更新” 另外,请遵循标准命名约定作为建议:)

如果stmt出现问题,请避免悬挂,包括

protected override bool Update() { if (this.Notes == "") { throw new Exception("Some message..."); } else { return base.Update(); } } 受保护的覆盖布尔更新() { 如果(this.Notes==“”) { 抛出新异常(“某些消息…”); } 其他的 { 返回base.Update(); } }
我真是个笨蛋!谢谢你指出这一点。我从base开始就认为。_update()已经返回了一个bool,表示我很好,但仍然忘记了一个“return”。我真是个傻瓜!谢谢你指出这一点。我假设自base.\u update()已返回一个bool,表示我很好,但仍然忘记了一个“return”。