我有一个由多个类使用的枚举。实现这个的最佳方法是什么?
答案 0 :(得分:13)
通常我只是将它们放入命名空间。这就是微软编写.NET框架的原因,所以我也是这样做的,为了你所理解的一致性:)
答案 1 :(得分:8)
将它放在自己的文件中,然后声明它:
public enum Foo {a,b,c,d}
当然要考虑你的命名空间。
答案 2 :(得分:8)
我会将它们保存在自己的文件中,以便于访问和良好的组织。
我通常不会把它们放在一个班级,除非他们以某种方式“归属”那里。就像你有一个带有汽车类型枚举的汽车类,以及可以为汽车类型设置限制的道路类和桥类。 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