2

我的应用程序中有一个 Utils 单元,截至目前,它只定义了几个枚举,例如:

public enum MostFavoredStates
{
    California,
    NorthCarolina,
    Vermont,
    NewMexico
}

public enum LeastFavoredStates
{
    NorthDakota,
    Illinois,
    Nebraska
}

public enum StatesInWhichIHaveResided
{
        California,
        NewYork,
        Montana,
    Alaska,
        Oklahoma,
        Wisconsin,
        Idaho,
        Missouri
}

当我在我的项目上运行 ReSharper 时,它说我在这个类中根本不需要“使用”语句;所以,我将它们全部删除,瞧!它真的什么都不需要。

“枚举”必须在某处声明——如果没有对该程序集或命名空间的引用,它怎么能存在?如果每个班级都有一些“基础”,那是什么?

4

3 回答 3

12

“枚举”必须在某处声明——如果没有对该程序集或命名空间的引用,它怎么能存在?如果每个班级都有一些“基础”,那是什么?

“枚举”是 C# 语言关键字。它不是需要解决的框架类型,因为它是语言本身的一部分。

请注意,还有许多其他语言关键字是这种方式。例如,您可以int在不使用 using 子句的情况下使用 for using System;,因为它作为别名“烘焙”到语言中System.Int32- 但您不能使用Int32,因为那是System.Int32.

于 2012-06-14T16:38:56.853 回答
2

在程序开始时你永远不需要任何using语句;它们的存在都是为了方便。

您始终可以为每个内联类型使用完全限定名称,它将被解析。

System.Console.WriteLine(System.String.Empty);

上面的代码片段编译得很好,没有任何using块。添加的唯一好处using System;是它可以让您将上面的代码缩短为:

Console.WriteLine(String.Empty);

现在,考虑到某些命名空间类型通常在给定代码文件中使用的次数,这往往是一个显着的改进,因此很少使用完全限定名称。

类型别名(int、string、double、datetime 等)映射到它们所代表的完全限定名称,而不仅仅是非限定名称,因此不依赖于using System.

于 2012-06-14T17:17:26.460 回答
0

重要的是要注意,C#“内置”类型(例如 int 和 string)只是 .NET 类型 System.Int32 和 System.String 的别名。

如果您使用 int 或 string,则不需要 using System.

如果您正在尝试决定使用哪个(.NET 类型或 C# 别名),则以下 SO 问题可能会有所帮助:

C#、int 还是 Int32?我应该关心吗?

于 2012-06-20T13:06:36.003 回答