可以“使用<namespace>;”指令在.NET中更有效率?</namespace>

时间:2013-03-07 09:56:20

标签: c# .net namespaces using stylecop

当我在C#中创建一个新的类文件时,通常的结构如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace UnitTest
{
    class Class1
    {
    }
}

StyleCop不喜欢在命名空间之外使用指令,所以理想情况下,我会重构我的代码:

namespace UnitTest
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    class Class1
    {
    }
}

从我作为Java程序员的日子开始,我被告知最好只导入必要的引用,而不是像这样导入整个包:

import foo.bar.MyObject;

而不是

import foo.bar.*;

我知道这也可以在C#中完成,增加的功能是你可以为类型使用别名(有时在使用本机代码时很有用):

using StringBuilder = System.Text.StringBuilder;

或使用别名时:

using HANDLE = System.IntPtr;
using HDC = System.IntPtr;

所以我的问题,关于使用指令的最佳实践和效率:

  1. 在命名空间中继续使用语句是否更有效,或者这纯粹是一种风格偏好?
  2. 如果仅包含必要的项目更有效,而不是整个命名空间?

2 个答案:

答案 0 :(得分:5)

  1. some fringe cases它会有所不同,但对于大多数情况来说,它只是一种风格偏好。
  2. using语句告诉编译器可以在哪里找到类型。它对运行时没有影响。

答案 1 :(得分:3)

  1. 都能跟得上;风格偏好,只要它不引入任何语义变化;它改变含义的情况非常罕见(虽然曾经有一个LINQ-to-SQL代码生成器的错误 关心你放置它们的位置 - 现在已经修复了)
  2. 都能跟得上;未使用未使用的指令,它们不会对编译器产生重大影响
  3. 请注意,指令太多会导致含糊不清;例如,有无数的类叫Timer。因此,值得保持整洁。