- - PR -
Hashtable のキー配列が欲しい
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-12 08:54
この2つは hashtable で出来ますよね(というかそのまま)。 問題はこれで何をしたいのかが良く分からないのが問題なのですが…
これで言いたいことは「常に順番が保証されたintのインデクサが欲しい」という意味でしょうか?「順番はどうでもいいのですべての要素にアクセスしたい」ということでしょうか?もし後者ならば、クラスなど作らずに hashtable でそのまま実現可能です。 文法は一応C#ですが、
私が hashtable 使う時は、90%はこんな回し方ですが…。どうでしょ? | ||||||||||||||||
|
投稿日時: 2005-11-13 03:04
値だけの列挙なら Values プロパティでも・・・
| ||||||||||||||||
|
投稿日時: 2005-11-13 05:11
NAL-6295です。
System.Collections.SortedListクラスを利用すれば良いのではないでしょうか。 | ||||||||||||||||
|
投稿日時: 2005-11-13 13:41
まあ、きくちゃんさんが仰っているように、順番を保証したいんでしょうね、多分。
そうそう、NameValueCollection(NameValue系)はIDictionayじゃない点だけ注意です。 | ||||||||||||||||
|
投稿日時: 2005-11-14 09:39
>判りにくいんですが、要は Microsoft.VisualBasic.Collection みたいにキーでもインデックスでもコレクションの要素にアクセス出来るようにしたい、って事でしょうか?
そうです。 サンプルをありがとうございました。 今回は、たまたま業務システムに含まれる各機能名を管理する専用のクラスを作っていて、この中で必要になったのですが、似たような使い方は、今後もするだろうということで汎用的に使えるものはないかと質問しました。 ちなみに、こんな感じです。 -------------------------- 社員マスター管理.題名 = "社員マスター" 社員マスター管理.機能グループ = "基準情報管理" 社員マスター管理.権限.読込 = False 社員マスター管理.権限.追加 = False 社員マスター管理.権限.更新 = False 社員マスター管理.権限.削除 = False 社員マスター管理.フラグ位置 = 5 取引先マスター管理.題名 = "取引先マスター" 社員マスター管理.機能グループ = "基準情報管理" 取引先マスター管理.権限.読込 = False 取引先マスター管理.権限.追加 = False : : (中略) : : 'コレクション生成 機能コレクション as 機能コレクションクラス = new 機能コレクションクラス() 機能コレクション.追加(社員マスター管理) 機能コレクション.追加(取引先マスター管理) 'グループ単位のメニューとドロップダウンメニューの生成 機能コレクション.メニューの追加(メインフォーム) -------------------------- 上記のような感じで、業務システムの機能のメニューを生成する際に、コレクションに追加した順番通りでなければならず、また、必要時に機能名から簡単に各種権限がひける必要があった訳です。 | ||||||||||||||||
|
投稿日時: 2005-11-14 09:55
間違えました。
-------------------------- 社員マスター管理.題名 = "社員マスター" 社員マスター管理.機能グループ = "基準情報管理" 社員マスター管理.権限.読込 = False 社員マスター管理.権限.追加 = False 社員マスター管理.権限.更新 = False 社員マスター管理.権限.削除 = False 社員マスター管理.フラグ位置 = 5 取引先マスター管理.題名 = "取引先マスター" 取引先マスター管理.機能グループ = "基準情報管理" 取引先マスター管理.権限.読込 = False 取引先マスター管理.権限.追加 = False : : (中略) : : 'コレクション生成 機能コレクション as 機能コレクションクラス = new 機能コレクションクラス() 機能コレクション.追加(社員マスター管理) 機能コレクション.追加(取引先マスター管理) 'グループ単位のメニューとドロップダウンメニューの生成 機能コレクション.メニューの追加(メインフォーム) -------------------------- メニューとして、次のようなものが欲しいのです。 基準情報管理 →社員マスター管理 →取引先マスター管理 以下のように順番が変わると困るわけです。 基準情報管理 →取引先マスター管理 →社員マスター管理 同時に、権限の取得や変更を行う際には、 if (機能コレクション.Item(社員マスター).権限.追加) then 追加処理() end if として使いたいわけです。 |