我可以使用变量来替换If条件吗?

时间:2010-12-28 22:02:49

标签: c# if-statement

由于我需要在三个地方使用j%3和j%5,我使用它就像一个变量,我只是想知道,这是减少任何内存存储并提高效率,

private void forloo()
        {
            bool a = j % 3 == 0;
            bool b = j % 5 == 0;
            for (int i=0; i < j; i++)
            {
                if (a&&b)
                {
                    richTextBox1.Text += "Hop\n";
                }

                if (a)
                {
                    richTextBox1.Text += "Hoppity\n";

                }
                else if (b)
                {
                    richTextBox1.Text  += "HopHop\n";
                }
            }
        }

3 个答案:

答案 0 :(得分:3)

如果您要实施FizzBu​​zz计划,则需要检查i是否可以被3和5整除,而不是j

任何优化器都会看到常见的子表达式,而不是继续重新计算它。但是,通常希望使用变量来提高可读性。在这种情况下,ab的名称不够好。

答案 1 :(得分:0)

在这种情况下,如果不经常这样做,你可能不会看到性能的大幅提升。如果布尔值更复杂,或者包含对其他函数的调用,那么最好将它们存储在变量中。

bool对内存的影响可以忽略不计。

答案 2 :(得分:0)

在你的情况下,你真的不需要在循环中包含多个if语句。把它写成:

    private void forloo()
    {
        bool a = j % 3 == 0;
        bool b = j % 5 == 0;
        string text = string.Empty;
        if (a&&b)
        {
            text = "Hop\n";
        }
        if (a)
        {
            text = "Hoppity\n";

        }
        else if (b)
        {
            text  = "HopHop\n";
        }
        for (int i=0; i < j; i++)
        {
            richTextBox1.Text += text;
        }
    }

但是,正如Lou Franco的回答所说,你可能做错了。