是否有隐藏的“使用”添加到 C# 类中

本文关键字:添加 类中 使用 隐藏 是否 | 更新日期: 2023-09-27 18:37:17

我的应用程序中有一个 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 时,它说我在这个类中根本不需要"using"语句;所以,我把它们都删除了,瞧!它真的什么都不需要。

"enum"必须在某处声明 - 如果没有对该程序集或命名空间的引用,它怎么能生存?如果每堂课都有"烘焙"的东西,那是什么?

是否有隐藏的“使用”添加到 C# 类中

"enum"必须在某处声明 - 如果没有对该程序集或命名空间的引用,它怎么能生存?如果每堂课都有"烘焙"的东西,那是什么?

"enum"是一个 C# 语言关键字。 它不是需要解析的框架类型,因为它是语言本身的一部分。

请注意,还有许多其他语言关键字是这种方式的。 例如,您可以使用int而不使用 using 子句来表示using System;,因为它作为System.Int32的别名"烘焙"到语言中 - 但你不能使用 Int32 ,因为这System.Int32

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

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

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

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

Console.WriteLine(String.Empty);

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

类型别名(整数、字符串、双精度、日期时间等)映射到它们所表示的完全限定名称,而不仅仅是非限定名称,因此不依赖于using System

请务必注意,C# "烘焙"类型(如 int 和 string)只是 .NET 类型 System.Int32 和 System.String 的别名。

如果您使用 int 或字符串,则不需要使用 System。

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

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