在头一本C#书中,我无法理解为什么两个“如果”用于再次检查相同的条件

在头一本C#书中,我无法理解为什么两个“如果”用于再次检查相同的条件,c#,C#,如果检查条件时目标为返回零(如果金额不大于0),我无法理解为什么会是2倍 我在第一本C#书的第737页找到了这个代码 有人能解释一下吗 public int ReceiveCash(int amount) { if (amount > 0) { if (amount > 0) { Cash += amount; return amount; } Con

如果检查条件时目标为返回零(如果金额不大于0),我无法理解为什么会是2倍

我在第一本C#书的第737页找到了这个代码

有人能解释一下吗

public int ReceiveCash(int amount) 
{

    if (amount > 0)
    {
        if (amount > 0)
        {
            Cash += amount;
            return amount;
        }

        Console.WriteLine("{0} says: {1} isn't an amount I’ll take", Name, amount);
    }

    return 0;
}
只是一个猜测(基于OP关于默认值为
else
的评论),但代码可能应该如下所示:

public int ReceiveCash(int amount) 
{

    if (amount > 0)
    {
        Cash += amount;
        return amount;
    }    
    else
    {
        Console.WriteLine("{0} says: {1} isn't an amount I’ll take", Name, amount);
        return 0;
    }
}
此处,如果金额大于0,则将其添加到
Cash
变量中并返回添加的金额,否则(否则)将向控制台打印一条错误消息并返回0


在我看来,这不是一个很好的
if else
的例子,但我没有这本书,所以我没有exmaple的上下文,只有代码。

IMO这可能是一个错误,从head first c#学习,我有第二版和第三版,两个版本都是一样的。无法理解逻辑。我认为编译器应该检测到这一点,并抱怨无法访问的代码。我还看到“else”是默认值,不需要用c#编写,对吗?else是默认值?不需要。如果你需要一个else语句,你可以在里面放一个。否则,如果if测试条件失败,则代码在if块结束后继续。我想你可以考虑一个隐含的,但不是默认的。这就是它的外观,它是第三版。