C#名称空间中的枚举与类中的枚举有什么区别

C#名称空间中的枚举与类中的枚举有什么区别,c#,class,enums,namespaces,difference,C#,Class,Enums,Namespaces,Difference,我有一个关于枚举的问题,代码如下: namespace space { public enum MyEnums { Enum1,Enum2,... } } namespace space { public class MyClass { public enum MyEnums { Enum1,Enum2,... } } } 区别是什么以及如何使用它们?从语法

我有一个关于枚举的问题,代码如下:

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

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

区别是什么以及如何使用它们?

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

MyClass.MyEnums.Enum1 
对正义

MyEnums.Enum1 
(在这两种情况下,都假定名称空间由
using
指令覆盖)


但是,在类中包含它也可以让您以不同的方式应用可访问性-您可以有一个仅在该类中可用的
private
enum,虽然命名空间中的枚举必须是
public
internal

1-作用域2-嵌套枚举可以是私有的,但唯一的区别在于代码的可维护性。枚举是一种类型,就像类或接口一样。更具体地说,它是一种值类型,类似于结构。同样的规则也适用于嵌套。好的编程规则,我更喜欢使用什么?第一个作用域还是第二个作用域?如果枚举仅在一个类的上下文中有效,则将其作为该类的一部分是可以的(并且可能有助于命名空间-绝大多数枚举不在类内)。