c# - 为什么此代码段将答案显示为 6?

标签 c# c#-4.0

<分区>

我的一个同学问了这个问题,我想确定我告诉他的是正确答案。基本上下面的代码(确实显示“6”作为答案)在到达 MessageBox.Show((i--).ToString()); 时让他感到困惑。

我的解释是递减操作 (i--) 实际上并没有发生,因为它被传递给 MessageBox 对象的 .Show 方法。所以它显示 6,因为它实际上并没有将该值减 1。

这是正确的解释吗?我从来没有尝试过在同时显示值的同时抛出 inc/dec 操作,所以我不确定我对此的推理是否正确。谢谢!

        int i = 6;            // I starts as 6...
        if (i >=4 )           // Then the check to see if i >= 4 is TRUE...
        {
            if( i == 5)       // The check to see if i == 5 is FALSE...
            {
                MessageBox.Show(i.ToString()); 
            }
            else
            {
                MessageBox.Show((i--).ToString());  // ****
            }
        }
        else 
        { 
            MessageBox.Show((i++).ToString());
        }

最佳答案

i-- 返回i的值,返回递减前的值。

您应该按照词汇顺序(正如创作者的意图)合乎逻辑地阅读它:

puts the value
and then decrements

如果它之前是 6,即使在 i 的值刚好是 5 之后,它也返回 6(打印)。

请注意,--i 递减并返回递减后的值。

关于c# - 为什么此代码段将答案显示为 6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10436604/

相关文章:

c# - Xamarin 表单绑定(bind)。如何根据某些条件显示 3 个不同字符串中的 1 个

c# - 在通用方法中返回接口(interface)继承的类

c# - 为 Linq (2Sqlite) 编写谓词

c# - 用 protobuf 替换 binaryformatter

asp.net - 在 asp.net 中回发和浏览器后退按钮问题

c# - 添加方法导致编译错误 C# ASP

c# - 是否在编译时优化了一些反射代码?

c# - 带有时区 postgresql 映射的时间戳

c# - 使用itextsharp使用哪个xaml控件显示pdf文件?

string - 有没有办法检查 C# 字符串的编码?