2

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

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

namespace UnitTest
{
    class Class1
    {
    }
}

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

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. 与整个命名空间相比,仅包含必要的项目是否更有效?
4

2 回答 2

5
  1. 一些边缘情况会有所不同,但对于大多数情况来说,这只是一种风格偏好。
  2. using 语句只是告诉编译器它可以在哪里找到类型。它对运行时没有影响。
于 2013-03-07T09:58:28.430 回答
3
  1. 不; 风格偏好,只要它不引入任何语义变化;它改变含义的情况非常罕见(尽管过去 LINQ-to-SQL 代码生成器存在一个错误,它确实关心您将它们放在哪里 - 现在已修复)
  2. 不; 不使用未使用的指令,它们不会对编译器产生巨大影响

请注意,指令过多会导致歧义;例如有无数的类叫做Timer. 因此,保持整洁是值得的。

于 2013-03-07T09:59:27.453 回答