我一直在运行StyleCop而不是一些C#代码,并且它一直报告我的using指令应该在命名空间内.
是否存在将using指令放入命名空间而不是命名空间外的技术原因?
我使用StyleCop已经有一段时间了(我已经习惯了).我的朋友建议我也尝试CodeMaid.我注意到的第一件事是使用组织的差异.
Stylecop按字母顺序使用订单,其中首先列出系统使用,下面列出非系统使用.
CodeMaid也按字母顺序命令使用,但它不首先命令系统使用.它只按字母顺序排序
我遇到的另一件事是CodeMaid允许你在命名空间之外使用(据我所知,最好将所有使用放在命名空间内)
我想问一下使用的正确顺序是什么,最终为什么?
我注意到很多东西来回的一件事是将使用语句放在C#代码文件中 - 无论是在最外层还是在命名空间内.我理解using语句的位置会影响该文件中引用的范围,但我不明白的是,在大多数情况下,有人会想要在其命名空间中使用它们的using语句.
在几乎所有情况下,单个文件中只存在一个名称空间声明,因此使用using语句的范围似乎/(是?)无效.如果一个人在同一个文件中放置了多个类型和多个命名空间,那么使用语句进行范围化就很有意义了,但即使在具有一个命名空间的文件中,我仍然会看到很多这种情况.为什么?
using System;
namespace MyNamespace
{
using System.Text;
public class MyClass {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
在整个项目中,看似不必要的一个例子是ASP.NET MVC源代码.
是的,我通常使用'using'指令如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AwesomeLib
{
//awesome award winning class declarations making use of Linq
}
Run Code Online (Sandbox Code Playgroud)
我最近见过这样的例子
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AwesomeLib
{
//awesome award winning class declarations making use of Linq
namespace DataLibrary
{
using System.Data;
//Data access layers and whatnot
}
}
Run Code Online (Sandbox Code Playgroud)
当然,我明白我可以将USING放在我的命名空间声明中.如果您的命名空间位于同一个根目录(它们有条理),这样的事情对我来说是有意义的.
System;
namespace 1 {}
namespace 2
{
System.data;
}
Run Code Online (Sandbox Code Playgroud)
但嵌套命名空间呢?就个人而言,我会将所有USING声明留在顶部,您可以轻松找到它们.相反,它看起来像是遍布源文件.
在嵌套命名空间中以这种方式使用的USING指令是否有益处?比如内存管理还是JIT编译器?
它是否会影响使用类型别名而不是完整命名空间的性能?例如,只导入Form类
using Form = System.Windows.Forms.Form;
或导入所有类型
using System.Windows.Forms;