例如,我很少需要:
using System.Text;
但它默认始终存在.我假设如果您的代码包含不必要的using指令,应用程序将使用更多内存.但还有什么我应该知道的吗?
另外,如果只在一个文件和大多数/所有文件中使用相同的using指令,它会有什么不同吗?
编辑:请注意,这个问题与被称为using语句的无关概念无关,旨在通过确保当对象超出范围时调用其IDisposable.Dispose方法来帮助管理资源.请参阅C#中"使用"的使用.
有是用于删除未使用的使用(S)/命名空间,除了编码偏好几方面的原因:
删除项目中未使用的using子句可以使编译更快,因为编译器具有较少的命名空间来查找要查找的类型.(对于C#3.0尤其如此,因为扩展方法,编译器必须在所有名称空间中搜索扩展方法,以获得更好的匹配,泛型类型推断和涉及泛型类型的lambda表达式)
当新类型添加到与使用的命名空间中的某些类型同名的未使用的命名空间时,可能有助于避免在将来的构建中发生名称冲突.
编码时会减少编辑器自动完成列表中的项目数,从而可以更快地打字(在C#3.0中,这也可以减少显示的扩展方法列表)
删除未使用的命名空间不会做什么:
以任何方式改变编译器的输出.
以任何方式改变已编译程序的执行(更快的加载或更好的性能).
得到的组件是相同的,有或没有未使用的使用.
程序运行时不会改变任何内容.所需的一切都按需加载.因此,即使您具有该using语句,除非您实际使用该命名空间/程序集中的类型,否则将不会加载与使用语句相关的程序集.
主要是,只是为了个人喜好清理.
代码清洁度很重要.
当人们看到多余的使用时,人们开始感觉到代码可能没有维护并且在眉地路径上.从本质上讲,当我看到一些未使用的使用声明时,脑后会出现一个小黄旗,告诉我"谨慎行事".读取生产代码永远不应该给你那种感觉.
所以清理你的使用.不要马虎.激发信心.让你的代码漂亮.给另一个开发者带来温暖模糊的感觉.
没有IL构造对应using
.因此,using
语句不会增加应用程序内存,因为没有为其生成的代码或数据.
Using
仅在编译时用于将短类型名称解析为完全限定类型名称的目的.因此,不必要的唯一负面影响using
是在编译期间稍微减慢编译时间并占用更多内存.不过我不会担心.
因此,具有using
您不需要的语句的唯一真正的负面影响是智能感知,因为在您键入时可能的匹配列表会增加.