我正在开发一个实现工厂模式的项目。工厂使用枚举作为 switch 语句。
枚举中的值对应于数据库表中的 id。表中的项目数 > 30 项,并且还在增长。该表不应增长到超过 100 个项目。
我应该在这种情况下使用枚举吗?我的替代方案是什么?
具有不同值的枚举成员的数量受枚举的基础类型(默认为 Int32)限制。无论如何...使用 Int32 枚举,您最多可以有 2^32 个不同的值。例子:
public enum MyEnum : byte { /* 256 Distinct Members */ }
但是您可以拥有任意数量的成员,前提是它们都具有相同的值:
public enum MyEnum : byte { A, B = A, C = B, ... }
C# 编译器中可能存在一些实现定义的限制,但我希望它依赖于内存。
这将成为一个相当长的 switch 语句,但在枚举中使用 100 个元素本身并没有错,而且速度会相当快。
另一种方法可能是填充一个Dictionary<int, Func<TFactoryResult>>
,但如果不了解您的工厂实现的更多信息,就很难给出建议。枚举很可能总是最快的选择,但不提供最易读的代码。