sa1200 所有 using 指令都必须放在命名空间(StyleCop)内纯粹是装饰性的吗? [复制]

Posted

技术标签:

【中文标题】sa1200 所有 using 指令都必须放在命名空间(StyleCop)内纯粹是装饰性的吗? [复制]【英文标题】:Is sa1200 All using directives must be placed inside the namespace (StyleCop) purely cosmetic? [duplicate] 【发布时间】:2010-11-07 11:49:33 【问题描述】:

可能重复:Should Usings be inside or outside the namespace

sa1200 所有 using 指令都必须放在命名空间内(StyleCop)

这只是为了代码可读性还是这样做有什么实际好处? 它对 GC 有什么帮助吗?

【问题讨论】:

(几乎?)所有 StyleCop 规则都是纯粹的装饰......这就是它的用途。 FxCop 提供功能性建议。 【参考方案1】:

它肯定对 GC 没有帮助。

以下是关于两种样式的讨论:

http://blogs.msdn.com/abhinaba/archive/2006/08/21/709051.aspx

http://blogs.msdn.com/abhinaba/archive/2008/07/08/do-namespace-using-directives-affect-assembly-loading.aspx

【讨论】:

那些链接失效了 第一个:docs.microsoft.com/en-us/archive/blogs/abhinaba/… 第二个:docs.microsoft.com/en-us/archive/blogs/abhinaba/…【参考方案2】:

如果您的项目中有多个命名空间,您可以限制每个命名空间分别使用哪些命名空间。

如果两个不同的命名空间中有相同的类名,这可能会派上用场。一个可能是项目某个部分的默认设置,而另一个可能是另一个项目的默认设置。

是的,他们会为这些规则寻找一些非常边缘的案例。

【讨论】:

但是你不会在一个文件中有多个命名空间,对吗?因为那会违反我目前无法追踪的其他一些规则...... SA1403:文件可能仅包含单个命名空间,验证 C# 文档不包含多个命名空间指令。 这种类型的冲突比我想象的更常见。而不仅仅是 System.*。常见的类型名称,如“Document”或“ILogger”,甚至来自不同命名空间但由于引用和本地类型或两个引用类型而在同一程序中使用的类似“Invoice”的名称很容易发生。【参考方案3】:

没有运行时差异。这纯粹是编译时间(和开发经验)的变化。无论哪种情况,编译后的 IL 文件都是相同的。

【讨论】:

实际上,在极少数情况下,采取这一举措会导致生成的代码发生变化。 blogs.msdn.com/ericlippert/archive/2007/06/25/… Eric:VS2008 没有捕捉到这一点吗?我认为现在提供了编译时警告/错误。我知道这是 2005 年的一个问题……但我认为它现在已经被抓住了。 你将一行代码从一个地方移动到另一个地方,编译器怎么知道旧的方式是“正确的”而新的方式是“错误的”? 我认为它发出了一个警告,表明可能存在歧义。猜不到。

以上是关于sa1200 所有 using 指令都必须放在命名空间(StyleCop)内纯粹是装饰性的吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

阻止 Visual Studio 将 using 指令放在命名空间之外

错误 1 未能找到类型或命名空间名称“Form1”(是不是缺少 using 指令或程序集引用?)

将Usings放在命名空间内部还是外部? [复制]

未能找到类型或命名空间“xxx"(是不是缺少using指令或程序引用?怎么回事?

请问asp.net dll 编译时 找不到类型或命名空间名称“名称”(是不是缺少 using 指令或程序集引用你如何解决了

C# 未能找到类型或命名空间名称“Form1”(是不是缺少 using 指令或程序集引用?)