【问题标题】:C# what difference enum in namespace than enum inside a classC#命名空间中的枚举与类中的枚举有什么区别
【发布时间】:2014-09-07 04:33:19
【问题描述】:

我对代码如下的枚举有疑问:

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

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

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

【问题讨论】:

  • 1 - 范围 2 - 可以将嵌套枚举设为私有
  • 唯一的区别在于代码的可维护性
  • 枚举是一种类型,就像类或接口一样。更具体地说,它是一种值类型,例如结构。相同的规则适用于嵌套。

标签: c# class enums namespaces difference


【解决方案1】:

从语法上来说,唯一的区别是你要在枚举类型前加上包含的类:

MyClass.MyEnums.Enum1 

与只是

MyEnums.Enum1 

(在这两种情况下,都假定命名空间被using 指令覆盖)

但是,将它包含在类中还可以让您以不同的方式应用可访问性 - 您可以拥有一个只能在该类中使用的 private 枚举,而命名空间中的枚举必须是 publicinternal

【讨论】:

  • 对,关于好的编程规则我应该更喜欢使用什么?第一个作用域还是第二个作用域?
  • 如果一个枚举只在一个类的上下文中有效,那么让它成为该类的一部分就可以了(并且可能有助于命名空间 - 绝大多数枚举不在一个类中。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 2017-03-30
  • 2013-10-27
相关资源
最近更新 更多