许多不必要的变量会导致C#中的性能问题吗?

我有一个C#4.0应用程序,在这个应用程序中我有很多不必要的变量。 像下面代码中的_foo变量:

 public string Foo() { var _foo = "foo bar"; return _foo; } 

正如我所提到的,像这样的情况发生在很多方法中。

很多不必要的变量(比如我在这种情况下解释的那些)会导致C#中的性能问题吗?

编辑:

如果我要删除它们,我不会问任何建议。 我的问题是性能效应。 事实上,该应用程序不是由我编写的,我是这个项目的新手。 我只是看到并想知道它是否有任何性能。 效果除了它对代码质量有影响。

很多不必要的变量(比如我在这种情况下解释的那些)会导致C#中的性能问题吗?

不,他们不会。

编译器足够智能,可以在发布模式下编译时删除所有不必要的东西,并优化代码:

 public string Foo() { return "foo bar"; } 

或者更准确地说:

 .method public hidebysig instance string Foo() cil managed { .maxstack 1 .locals init ( [0] string str) L_0000: ldstr "foo bar" L_0005: stloc.0 L_0006: ldloc.0 L_0007: ret } 

与其调试模式相比,它与完全不同:

 .method public hidebysig instance string Foo() cil managed { .maxstack 1 .locals init ( [0] string _foo, [1] string CS$1$0000) L_0000: nop L_0001: ldstr "foo bar" L_0006: stloc.0 L_0007: ldloc.0 L_0008: stloc.1 L_0009: br.s L_000b L_000b: ldloc.1 L_000c: ret } 

从性能的角度来看,这绝对不是你应该担心的事情。 您应该担心的是代码的可读性,这个优化的代码示例似乎比您的版本更具可读性。

因此,您可以信任不断改进并能够优化此类情况的编译器。

除非系统出现明显的性能问题,否则不应对性能进行编码/修改。 作为软件开发人员,我们的第一个目标是编写干净,可读,优雅的代码。 就像Darin所说的那样,编译器将代表我们优化机器执行。

如果这是一个未使用的变量,它可能会导致性能降低并增加程序集的大小,因为它们将在运行时占用内存空间。

如需进一步阅读和参考,您可以查看:

https://msdn.microsoft.com/en-us/library/ms182278(v=vs.140).aspx