Using Namespace;
消耗更多内存吗?
我目前正在开发一个移动应用程序而且我很好奇,如果那些不需要使用visual studio在创建类时放置的语句会让我的应用程序需要一些额外的内存来运行。
答案 0 :(得分:14)
简单地说:不。
这些陈述不会被翻译成任何形式的IL。它们只是避免使用(丑陋!)完全限定类型名称的快捷方式。 但是,如果你正在使用VS2008和/或R#,你可以自动删除未使用的。
答案 1 :(得分:5)
命名空间是C#的仅编译时功能,允许您在开发期间节省时间。编译器使用using
指令在代码中查找速记类型名称。
基本上每次编译器遇到代码中的类型名称时,它都不知道它需要每个using
指令并将其添加到类型的名称中,并查看该完全限定名称是否解析。
编译应用程序后,命名空间和using
指令就消失了,因为IL不需要它们。
答案 2 :(得分:3)
如果用“记忆”你的意思是“我必须记住为什么我把那些使用语句放在首位”然后是的。
但是,从某种意义上说,你的意思并非如此。 .NET程序集通常是按需加载的,因此通过使用这些额外的语句不会导致任何性能损失。但是,为了可维护性,您需要删除它们。
答案 3 :(得分:3)
这里是关于“使用”关键字的微软信息:http://msdn.microsoft.com/en-us/library/sf0df423.aspx。它基本上提供了在程序集上使用完全限定名称的替代方法,但它实际上并不会导入或包含具有该特定关键字的内存中的程序集。
答案 4 :(得分:2)
不,它没有。它只是一种简写,允许您只使用类型名称
的StringBuilder
与名称空间限定的类型名称相反:
System.Text.StringBuilder
在声明using语句的文件中。
答案 5 :(得分:1)
不,它只会使编译器运行得慢一点:)
答案 6 :(得分:0)
没有。它的使用方式使您无需使用全名定义正在使用的对象。如果您使用的是System.IO,则可以使用File而不是System.IO.File。
在您实际创建对象之前,它不会加载到内存中。与C ++不同,不导入整个库,因为.NET框架安装在目标计算机上并加载到GAC中,而您的自定义.dll位于应用程序文件夹的bin文件夹中。