存储为变量vs没有

时间:2016-02-15 06:28:23

标签: c# performance variables memory-management

对于以下这两种方法,有什么区别吗?抛开代码可读性,Method1会消耗更少的内存,而Method2执行得更快吗?

一般情况下,我总是使用哪一个?

    public void Method1(string userInput)
    {
        if (userInput.ToLower().Replace(" ", "") == "optiona")
        {

        }

        else if (userInput.ToLower().Replace(" ", "") == "optionb")
        {

        }

        else
        {

        }
    }

    public void Method2(string userInput)
    {
        string modifiedInput = userInput.ToLower().Replace(" ", "");

        if (modifiedInput == "optiona")
        {

        }
        else if (modifiedInput == "optionb")
        {

        }
        else
        {

        }
    }

3 个答案:

答案 0 :(得分:2)

一般情况下,我更喜欢method2,因为您无需反复重复操作。

但最终它是一种微观优化。由于操作会创建一个新字符串,您可能会发现method2稍微好一点。

但最后,如果你想找到最快的2匹马中的哪一匹,那么就跑吧。

答案 1 :(得分:0)

如果用户输入为“optionb”,则method2会更好,如果用户输入的“optiona”超过平均值,则method1和method2将没有可识别的差异。

答案 2 :(得分:0)

我也喜欢method2。但不是因为@David提到的性能原因。

方法2更容易阅读。

使用临时变量会为方法添加额外的行。这个额外的行反映了您的方法中真正发生的额外操作步骤。

特别是当你给这个变量一个有意义的名字" modifiedInput"时,其他程序员将更容易理解你的方法在做什么。

更容易理解代码意味着更好的可维护性。