|
■No34379 (海原雄山 さん) に返信 > 共通で使用する定数を作りたいのですが、Public Constで使用する以外に、ハッシュテーブルのようなものを定数として使用したいと考えています。 > 例えば、以下のようなことをやりたいと思っています。 > ・分類記号として、例えば"1","2","3","4","A","B"を用意する。 > ・ユーザがコンボボックス等で選択した分類記号を処理するロジック(例えばSelect Caseで分岐して処理する)で、ソース上で何の値を > 使用しているか分かるように、変数・定数名に意味を持たせるようにしたい。 > (Enumのような感じ) > ・分類記号をキーとして、それに対応する分類名を取得したい。 > ・値は変更できないようにしたい。
この機能を持った辞書系のクラスがたぶんありませんので、 各要素の値の追加/削除や変更を絶対にさせないようにするにはそういうクラスを作る必要があると思います。
「値を変更できないようにしたい」の条件以外なら以下のような感じで満たせるのですが。 (以下のようなコレクションの初期化子は確かC#3.0からだったと思うので、それ以前なら静的コンストラクタを使って初期化ですね)
// どこかのクラスで以下のような定義をする。 public static readonly Dictionary<string, Hoge> Dic = new Dictionary<string, Hoge>() { { "1", Hoge.A }, { "2", Hoge.B }, { "3", Hoge.C }, { "A", Hoge.X }, { "B", Hoge.Y } };
//どこかで適当にenumを定義 public enum Hoge { A, B, C, X, Y, }
> これらを満たすようなものを作るには、クラスを作成し、これをインスタンス化するしかないでしょうか?
値の変更を許さないためには独自のクラスを作る必要があるのではないかと思いますが、 #調べが足りないだけで、.NET Frameworkのクラスライブラリ内に使えるクラスがあるかもしれません。
> わざわざインスタンスを作成せずに、静的に参照できるハッシュテーブルを作成する方法はあるでしょうか?
インスタンスを作成せずに、という条件を満たす方法はありません。
|