7

是否Using Namespace;消耗更多内存?

我目前正在开发一个移动应用程序,我只是好奇 Visual Studio 在创建类时放置的那些不需要的 using 语句是否使我的应用程序需要一些额外的内存才能运行。

4

7 回答 7

15

简单地说:没有。

这些语句不会被翻译成任何形式的 IL。它们只是避免使用(丑陋!)完全限定类型名称的捷径。但是,如果您使用的是 VS2008 和/或 R#,您可以自动删除未使用的那些。

于 2009-02-17T18:24:19.333 回答
5

命名空间是 C# 的仅编译时功能,可让您在开发过程中节省时间。编译器使用这些using指令来查找代码中的速记类型名称。

基本上每次编译器在您的代码中遇到一个它不知道的类型名称时,它都会接受每个using指令并将其添加到类型名称之前,并查看该完全限定名称是否解析。

一旦你的应用程序被编译,命名空间和using指令就消失了,因为 IL 不需要它们。

于 2009-02-17T18:27:06.317 回答
3

如果通过“记忆”你的意思是“我必须记住为什么我首先将那些 using 语句放在首位”,那么是的。

但是,不,不是你的意思。.NET 程序集通常是按需加载的,因此使用这些额外的语句不会导致任何性能损失。但是,为了可维护性,您需要删除它们。

于 2009-02-17T18:28:43.067 回答
3

这是在这种情况下“使用”关键字的微软信息:http: //msdn.microsoft.com/en-us/library/sf0df423.aspx。它基本上提供了在程序集中使用完全限定名称的替代方法,但它实际上并没有使用该特定关键字将程序集导入或包含在内存中。

于 2009-02-17T18:33:35.737 回答
2

不,不是的。它只是允许您仅使用类型名称的简写

字符串生成器

与命名空间限定的类型名称相反:

System.Text.StringBuilder

在声明 using 语句的文件中。

于 2009-02-17T18:27:26.377 回答
1

不,它只会让编译器运行得慢一点:)

于 2009-02-17T18:26:46.533 回答
0

它不是。使用它是为了不必用全名定义正在使用的对象。如果您使用 System.IO,您可以只使用 File 而不是 System.IO.File。

在您实际创建对象之前,它不会加载到内存中。与 C++ 不同,不导入整个库,因为 .NET 框架安装在目标机器上并加载到 GAC 中,而您的自定义 .dll 位于应用程序文件夹的 bin 文件夹中。

于 2009-02-17T18:27:11.387 回答