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