自分用のメモです
ArrayList
配列は宣言時にサイズ(要素数)が固定されるが、ArrayListクラス型の配列を使うと必要に応じて動的にサイズを増加させることが可能。これは、要素を追加するごとにメモリの再割り当てが行われるためである。
ArrayListクラスでは、格納する要素をすべてobject型として扱う。object型はすべてのクラスの基本クラスのため、すべてのデータ型の値を格納することができ、複数のデータ型を混在させることも可能。
- ArrayListを使う
using System.Collections;
namespace App
{
class Program
{
static void Main(string[] args)
{
ArrayList ary = new ArrayList();
ary.Add("abc");
ary.Add(10);
Console.WriteLine(ary[0]);//abc
Console.WriteLine(ary[1]);//10
Console.WriteLine(ary[0].GetType());//String
Console.WriteLine(ary[1].GetType());//Int32
}
}
}
ArrayListのコレクションには、あらゆる型のデータを格納することができる。
string型とint型の値を格納し、GetTypeメソッドで型を取得し表示させる。
- ArrayListにおけるキャスト
GetType()でコレクションの型を取得したが、これはそれぞれの要素として格納されている値の型が表示されただけで、要素そのものの型はすべてobject型になる。
以下の場合はコンパイルエラーとなる
string str = "abc";
ary.Add(str);//stringがobjectにキャストされる
str = ary[0];//string型の変数にobject型は代入できない
このような場合はキャストを行う必要がある
str = Convert.ToString(ary[0]);