-2

我正在开发一个实现工厂模式的项目。工厂使用枚举作为 switch 语句。

枚举中的值对应于数据库表中的 id。表中的项目数 > 30 项,并且还在增长。该表不应增长到超过 100 个项目。

我应该在这种情况下使用枚举吗?我的替代方案是什么?

4

2 回答 2

1

具有不同值的枚举成员的数量受枚举的基础类型(默认为 Int32)限制。无论如何...使用 Int32 枚举,您最多可以有 2^32 个不同的值。例子:

public enum MyEnum : byte { /* 256 Distinct Members */ }

但是您可以拥有任意数量的成员,前提是它们都具有相同的值:

public enum MyEnum : byte { A, B = A, C = B, ... }

C# 编译器中可能存在一些实现定义的限制,但我希望它依赖于内存。

于 2013-01-17T23:07:54.783 回答
0

这将成为一个相当长的 switch 语句,但在枚举中使用 100 个元素本身并没有错,而且速度会相当快。

另一种方法可能是填充一个Dictionary<int, Func<TFactoryResult>>,但如果不了解您的工厂实现的更多信息,就很难给出建议。枚举很可能总是最快的选择,但不提供最易读的代码。

于 2013-01-17T23:09:07.170 回答