C#创建多个类使用的枚举的最佳方法是什么?

时间:2009-01-22 08:26:29

标签: c# enums

我有一个由多个类使用的枚举。实现这个的最佳方法是什么?

7 个答案:

答案 0 :(得分:13)

通常我只是将它们放入命名空间。这就是微软编写.NET框架的原因,所以我也是这样做的,为了你所理解的一致性:)

答案 1 :(得分:8)

将它放在自己的文件中,然后声明它:

public enum Foo {a,b,c,d}

当然要考虑你的命名空间。

答案 2 :(得分:8)

  1. 将枚举放在命名空间中(或为它们创建一个新的命名空间) 或
  2. 如果更有意义的话,将它们放在某个(静态?)类中。
  3. 我会将它们保存在自己的文件中,以便于访问和良好的组织。

    我通常不会把它们放在一个班级,除非他们以某种方式“归属”那里。就像你有一个带有汽车类型枚举的汽车类,以及可以为汽车类型设置限制的道路类和桥类。 Car.CarType似乎是一个合乎逻辑的组织......

答案 3 :(得分:7)

XML注释有帮助,特别是如果其他人会使用它

 /// <summary>
/// Defines the types of cars we support
/// </summary>
public enum CarType
{
    /// <summary>
    /// VW - the peoples car
    /// </summary>
    Volkswagen,

您的枚举名称应为复数(按照FxCop的指示)

public enum CarTypes

添加数值并使用按位编号,即使您不打算按位使用(以后重新编号也很痛苦。)

    Volkswagen = 1,

    /// <summary>
    /// They own lambo... can't be all that bad
    /// </summary>
    Audi = 2,

    /// <summary>
    /// Good, cheap, reliable
    /// </summary>
    Toyota = 4,

答案 4 :(得分:3)

以下是在不同命名空间中使用两个枚举的示例:

using TotallyDifferentNameSpace.Enums;

namespace EnumEx
{
    class Program
    {
        static void Main(string[] args)
        {
            CarType car = CarType.Audi;
            PetrolType pType = PetrolType.Diesel;
        }
    }

    public enum CarType
    {
        Volkswagen,
        Audi,
        Toyota,
        Ford,
        Porsche,
        Lada
    }
}

namespace TotallyDifferentNameSpace.Enums
{
    public enum PetrolType
    {
        Gasoline,
        Diesel
    }
}

答案 5 :(得分:1)

你可以把一个enum是一个带有.cs扩展名的新代码文件,用于intellisense工作,确保你的项目/解决方案的一部分,并且当然它应该是一个公共枚举,以便你有一个解决方案范围。如果intellisense是一个问题,请确保您构建一次解决方案,我有一次这个问题,只是重建解决了它。如果要正确组织代码并编写大型项目,则命名空间是一个不错的选择。 .NET框架很大。所以它在命名空间下有枚举只是为了更好地理解和代码组织。

答案 6 :(得分:-9)

我的建议是根本不使用Enums。改为使用单身。

    public class A : ISomeInterface
    {
        public static readonly A Instance = new A();
        private A()
        {
        }

    }

    public class B : ISomeInterface
    {
        public static readonly B Instance = new A();
        private B()
        {
        }
    }

在大多数情况下效果更好,最好稍后延长。

祝福

Matze