Могу ли я использовать переменные для замены условий If? - PullRequest
2 голосов
/ 29 декабря 2010

Поскольку мне нужно, чтобы 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 ]

3 голосов
/ 29 декабря 2010

Если вы внедряете программу FizzBuzz, вам нужно проверить, делится ли i на 3 и 5, а не j.

Любой оптимизатор увидит общие подвыражения и не будет их пересчитывать. Однако обычно желательно использовать переменную для удобства чтения. В этом случае a и b не являются достаточно хорошими именами.

0 голосов
/ 29 декабря 2010

В вашем случае вам действительно не нужно иметь несколько операторов 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;
        }
    }

Но поскольку ответ Лу Франко говорит, что вы, вероятно, поступаете неправильно.

0 голосов
/ 29 декабря 2010

В этом случае вы, вероятно, не увидите значительного увеличения производительности, если это не будет сделано так часто. Если бы логические значения были более сложными или содержали вызовы других функций, вам лучше было бы сохранить их в переменной.

Влияние на память незначительное для bool.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...