電子書籍の厳選無料作品が豊富!

visual C# 2010 Express を使用しています。

ArrayListは動的に要素を追加できるの便利なのですが、
次のような使い方で要素を取り出そうとするとasキャストが必要になってしまいます・・・

class Data : Dictionary<string, string>
{
}

class DataList : ArrayList
{
public void Add(Data value)
{
base.Add(value as Data);
}
}

class Program
{
static void Main(string[] args)
{
var d = new Data();
d["a"] = "aa";
d["b"] = "bb";
DataList arr = new DataList();
arr.Add(d);
// var dd = arr[0] as Data;
var dd = arr[0];
Console.WriteLine(dd["a"]);// エラー 角かっこ [] 付きインデックスを 'object' 型の式に適用することはできません。
Console.ReadLine();
}
}

そこでというか、ラップした独自のクラスを作りたいと思い上のような感じで作成したのですが、
やはり同じエラーになってしまいます・・・
asキャストを必要とせず、そのままDataクラス(Dictionary<string, string>)を
取り出すためにはどのように作成したら良いのでしょうか?

A 回答 (1件)

System.Collections.GenericList<> を使用するといいと思いますよ。



var d = new Data();
d["a"] = "aa";
d["b"] = "bb";
System.Collections.Generic.List<Data> arr = new System.Collections.Generic.List<Data>();
arr.Add(d);
var dd = arr[0];
Console.WriteLine(dd["a"]);

参考URL:http://www.atmarkit.co.jp/fdotnet/special/generi …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
なるほど、それでできました。
まさに求めていた結果でしたので助かりました。
ありがとうございます。

お礼日時:2011/10/16 20:09

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