例如,我很少需要:
using System.Text;
但默认情况下它始终存在。我假设如果您的代码包含不必要的using指令,则应用程序将使用更多内存。但是我还有什么需要注意的吗?
另外,如果仅在一个文件中对大多数文件/所有文件使用相同的using指令,是否有任何区别?
编辑:请注意,此问题与称为using语句的无关概念无关,该语句旨在通过确保当对象超出范围时调用其IDisposable.Dispose方法来帮助管理资源。请参见C#中“使用”的用法。
例如,我很少需要:
using System.Text;
但默认情况下它始终存在。我假设如果您的代码包含不必要的using指令,则应用程序将使用更多内存。但是我还有什么需要注意的吗?
另外,如果仅在一个文件中对大多数文件/所有文件使用相同的using指令,是否有任何区别?
编辑:请注意,此问题与称为using语句的无关概念无关,该语句旨在通过确保当对象超出范围时调用其IDisposable.Dispose方法来帮助管理资源。请参见C#中“使用”的用法。
Answers:
当您的程序运行时,它不会改变任何内容。所需的一切均按需加载。因此,即使您具有using语句,除非您实际上在该名称空间/程序集中使用了类型,否则将不会加载using语句所关联的程序集。
主要是为了个人喜好进行清理。
有是用于删除未使用的使用(S)/命名空间,除了编码偏好几方面的原因:
删除未使用的名称空间将无法执行以下操作:
删除或不删除未使用的组件时,所得组件相同。
using
的指令.cs
文件可以防止您删除某些(其他未使用)集的引用您的.csproj
项目。如果您有许多项目的“解决方案”,则项目之间不必要的引用将迫使这些项目以特定的顺序编译,而实际上它们是独立的并且可以并行编译。因此,using
在检查多项目解决方案中未使用的项目引用之前,请删除未使用的指令。
如果像命名空间中的(未使用的)类那样调用类,则名称可能会冲突。对于System.Text,如果定义一个名为“ Encoder”的类,则会遇到问题。
无论如何,这通常是一个小问题,并且由编译器检测到。
主要是个人喜好。我自己清理它们(Resharper很好地告诉我什么时候不需要使用语句)。
可以说这可能会减少编译时间,但是如今,随着计算机和编译器速度的提高,它不会产生任何明显的影响。
留下额外的using
指令就可以了。删除它们有一点价值,但没有太大价值。例如,它使我的IntelliSense完成列表更短,因此更易于浏览。
编译的程序集不受无关using
指令的影响。
有时我将它们放在内#region
,然后将其折叠;这使得查看文件更加整洁。IMO,这是的少数几种好用法之一#region
。
#region
,因此,您是说,#region
在大多数情况下,使用是不好的?
#region
有代码味。这说明您的课堂上发生了太多事情。
仅使用实际使用的名称空间可以使代码保持记录。
您可以通过任何搜索工具轻松地找到代码的哪些部分正在相互调用。
如果您有未使用的名称空间,则在运行搜索时没有任何意义。
我现在正在清理名称空间,因为我一直被问到应用程序的哪些部分正在以一种或另一种方式访问相同的数据。
我知道哪些部分正在以每种方式访问数据,这是因为数据访问被名称空间分隔开了,例如直接通过数据库和间接通过Web服务。
我想不出一种更简单的方式一次完成所有操作。
如果您只是想让代码成为黑匣子(对开发人员而言),那么没关系。但是,如果您需要长期维护它,那么它就像所有其他代码一样是有价值的文档。
不要忘记,编译器在构建项目时做了很多工作来优化所有内容。使用它在很多地方都使用过,或者一旦编译就不应做1。