C#方法参数的效率

Ale*_*lex 0 c#

我是否正确地说:

public static void MethodName{bool first, bool second, bool third}
{
   //Do something
}
Run Code Online (Sandbox Code Playgroud)

比这更有效:

public static void MethodName{bool [] boolArray}
{
    bool first = boolArray[0]; 
    bool second = boolArray[1];
    bool third = boolArray[2];
    //Do something
}
Run Code Online (Sandbox Code Playgroud)

我的想法是,他们必须要声明第一,第二和第三 - 只是在不同的地方.但是对于第二个,它必须将它添加到一个数组中,然后再将其解压缩.

除非你像这样声明数组:

MethodName(new[] { true, true, true });
Run Code Online (Sandbox Code Playgroud)

在哪种情况下我不确定哪个更快?

我问,因为我正在考虑使用第二个,但想知道是否/对性能的影响.

在这种情况下,表现并不是特别重要,但对我来说澄清这一点会很有帮助.

另外,第二个的优点是你可以传递任意数量的值,我觉得它也更容易阅读?

我想使用它的原因是因为已经有大约30个参数被传递到该方法中,我觉得继续添加更多内容变得令人困惑.所有这些bool密切相关,所以我认为它可以使代码更易于打包它们.

我正在研究现有代码,并且在我的项目范围内花费时间重新设计方法以减少传递给方法的参数数量,但我认为理解这种变化的含义是一种好习惯.

Mat*_*zer 10

在性能方面,您的问题只有一个答案:

"程序员浪费了大量的时间来考虑或担心程序中非关键部分的速度,而这些效率尝试实际上在考虑调试和维护时会产生很大的负面影响.我们应该忘记效率低下,比如说97%的时间:过早的优化是万恶之源.然而,我们不应该把关键的3%的机会放弃."

在生产力方面parameters > arrays.

边注

每个人都应该知道Donald Knuth在1974年所说过的话.在这个声明发表40多年之后,我们仍然会经常出现过早优化(甚至无意义的优化)!

进一步阅读

我想看看这个关于软件工程的其他问答