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

只是好奇它。

如果我在代码文件的开头添加多个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这样做,但我很想知道它。

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

为了完整起见,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 

您的应用程序没有性能命中。 它只是您用来避免输入整个资格的捷径。 例如

 var f = new File() 

代替

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

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

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

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