プロが教える店舗&オフィスのセキュリティ対策術

はじめまして。
今回初めてハッシュテーブルを利用するのですが、不明な点があり、こちらへ質問を投稿させていただきました。

Hashtable ht = new Hashtable();
string[] str = {"明日","明後日","明々後日"};
ht["after"] = str;

以上のようにキーafterの値へ配列の代入を行ったのですが、値の配列を直接操作する方法がわからず困っております。

//値の[0]より文字列「明日」を取り出したい
string val = (string[])ht["after"][0];

ためしに上記の様に書いてみたものの、ビルド時に「角かっこ [] 付きインデックスを 'object' 型の式に適用することはできません。」というエラーが発生します。

初歩的な内容かと思いますが、お分かりになる方がおりましたら、ご回答のほどよろしくお願いいたします。

環境 VisualC# 2005 Express Edition

A 回答 (2件)

普段VB.NETユーザーで、未検証の勘です。



string val = ( (string[])ht["after"]) [0];

という計算順序として認識されているならいいんですが,

string val = (string[]) (ht["after"] [0]);

という計算順序として扱われると

ht["after"] が Object、
それに大して0番目って何よ!?

って言われるんじゃないかと。

#ところで,Genericsの型として配列って渡せるのかなー
http://unboxedsolutions.com/sean/archive/2005/07 …
    • good
    • 0
この回答へのお礼

himajin100000様

回答ありがとうございます。ご指摘いただきました通り演算子優先順位の誤りで、例として挙げていただきました記述にてビルドしましたところ、正常にハッシュテーブルの値の配列を参照することができました。

string val = ((string[])ht["after"])[0];

初歩的な内容についてわかりやすくご指摘いただき、本当にありがとうございました。

お礼日時:2007/07/05 19:00

#1だ。



参考資料(C/C++だけど)

http://www5f.biglobe.ne.jp/~fuku-labo/library/pr …

「配列添字参照」の方が「型キャスト」よりも優先順位が高い
    • good
    • 0
この回答へのお礼

himajin10000様

このような優先順位があるとは知りませんでした。是非参考にさせていただきます。

この度はありがとうございました。

お礼日時:2007/07/05 19:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています