sa1200:所有的using指令都必须放在命名空间内(StyleCop),这是纯粹的表面修饰吗?

22

4
几乎所有的StyleCop规则都是纯粹的外观调整...这就是它的作用。FxCop则提出功能性建议。 - jerryjvl
3个回答


4
如果您的项目中有多个命名空间,您可以单独限制每个命名空间使用哪些命名空间。如果两个不同命名空间中存在相同的类名,这可能会很方便。其中一个可能是项目的一部分中的默认值,而另一个可能是另一部分的默认值。是的,他们寻找这些规则的一些非常边缘的情况。

6
但是你不会在一个文件中使用多个命名空间,对吧?因为那将违反一些我目前无法找到的其他规则... - Mark
2
SA1403: 文件只能包含单个命名空间,验证 C# 文档不包含多个命名空间指令。 - string.Empty
这种类型冲突比我想象的要常见得多,而且不仅限于 System.*。常见的类型名称,如“Document”或“ILogger”,甚至像“Invoice”这样的名称来自不同的命名空间,但由于引用和本地类型或两个引用类型在同一程序中使用是很容易发生的。 - StingyJack

1

没有运行时差异。这只是编译时(和开发体验)的变化。在任何情况下,文件和编译后的IL都将是相同的。


4
实际上,很少有情况会导致进行该移动会引入生成代码的变化。http://blogs.msdn.com/ericlippert/archive/2007/06/25/inside-or-outside.aspx - Eric Lippert
Eric: VS2008不会检测到吗?我以为现在可以提供编译时的警告/错误。我知道这是2005年的问题...但我以为现在可以捕获了。 - Reed Copsey
4
当你将一行代码从一个位置移到另一个位置时,编译器如何知道旧的方式是“正确”的,而新的方式是“错误”的? - Eric Lippert
我以为它会警告可能存在歧义。看来不是这样。 - Reed Copsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接