C#中在命名空间中声明枚举和在类中声明枚举有什么区别?

5
我有一个关于枚举的问题,以下是代码:
namespace space
{
    public enum MyEnums
    {
        Enum1,Enum2,...
    }
}

namespace space
{
    public class MyClass
    {
        public enum MyEnums
        {
            Enum1,Enum2,...
        }
    }
}

它们有什么区别,如何使用它们?

1
1 - 范围 2 - 嵌套枚举可以设为私有 - Dennis_E
唯一的区别在于代码可维护性。 - BRAHIM Kamel
枚举是一种类型,就像类或接口一样。更具体地说,它是一个值类型,就像结构体一样。关于嵌套的规则也适用。 - Nathan Cooper
1个回答

7

从语法上讲,唯一的区别在于您需要在枚举类型之前加上包含类:

MyClass.MyEnums.Enum1 

与仅仅相比

MyEnums.Enum1 

(在这两种情况下,命名空间都假定已经使用了using指令进行引用)
然而,将其包含在类内还允许您以不同的方式应用可访问性 - 您可以拥有一个仅在该类中可用的private枚举,而位于命名空间中的枚举必须是publicinternal

关于良好的编程规则,我应该使用哪个范围更好?第一个还是第二个? - Serkan Ayyıldız
1
如果一个枚举类型只在一个类的上下文中有效,那么将其作为该类的一部分是可以的(并且可能有助于命名空间 - 绝大多数枚举类型不在类内部)。 - D Stanley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接