-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 に答える