C#中未使用的“using”指令对性能的影响

时间:2013-01-29 10:22:16

标签: c# .net performance

对此感到好奇。

如果我在代码文件的开头添加多个using指令,而我的代码中没有使用这些指令,这是否重要?像这样。

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.IO;
//using blah.. blah.. blah..;

public class myClass
{
    // Class members
}
  • 是否会对我的应用内存使用量产生不良影响?

  • 是否对我的应用效果产生了不良影响?

我知道删除它们是一个很好的做法,我们完全支持.Net IDE这样做,但我很想知道它。

4 个答案:

答案 0 :(得分:17)

额外Using 指令不会对最终应用程序产生任何内存/性能影响 - 它们只是编译器提供的用于处理长类型名称的快捷方式。编译器使用这些命名空间来解析不合格(或部分限定)的类型名称以更正类型。

答案 1 :(得分:11)

为了完整起见,IL为此生成了:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Hello World!");
        }
    }
}

和此:

class Program
{
    static void Main(string[] args)
    {
        System.Console.Write("Hello World!");
    }
}

完全相同:

.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       13 (0xd)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldstr      "Hello World!"
  IL_0006:  call       void [mscorlib]System.Console::Write(string)
  IL_000b:  nop
  IL_000c:  ret
} // end of method Program::Main

答案 2 :(得分:8)

您的应用程序没有性能点击。这只是您用来避免输入整个资格的捷径。 e.g。

var f = new File()

而不是

var f= new System.IO.File();

但是。它会影响开发环境(IDE)的性能,因为您使用的语句越多,自动完成缓存就越大。这使查找时间略微变慢。但这通常难以察觉。

此建议不适用于向项目添加程序集引用。如果您添加对MyGloriousLibrary.DLL的引用并且从不使用它,那么您将度过一段美好时光。

答案 3 :(得分:4)

它根本不会影响应用程序的整体性能或内存使用量。 using指令在编译时就在那里,因此您不必每次都写出完整的类名。编译代码后,这些指令没有任何内容(编译后的代码总是使用完整的类型名称)。