プログラミングや電子工作などについての記事がほとんどです

C# ArrayListとListの違い

0 件のコメント

C#で可変長のリスト・コレクションを使うときに,ArrayListとListの使い分けってどうするのだろうかと疑問に思っていました.調べたら色々見つかったのでまとめました.

作って覚えるVisual C# 2015 デスクトップアプリ入門
荻原 裕之 宮崎 昭世
秀和システム
売り上げランキング: 2,540

ArrayList

言わずと知れた,可変サイズの一次元リスト・コレクションです.
.NET Framework 1.xで大活躍のコレクションですが,もちろん.NET Framework 2.0においても使用は可能です.

特色

ArrayListには格納するオブジェクトの型名の指定をせず,格納されるときにすべてObject型にアップキャストされる.(ボックス化される.)
【メリット】
同じArrayListに何でも突っ込める.
【デメリット】
値を呼び出して使用する際にはキャストが必要である.
foreach文などで順に処理する際,異なる方のオブジェクトが混ざっているとエラーになってしまうことがある.

List<T>

.NET Framework 2.0で,ジェネリックの仕組みを使ったListジェネリッククラスが導入されました.

特色

型の指定をしてインスタンス化します.
【メリット】
値を呼び出して使用する際,キャストが不要である.

おまけ:LinkedList

こちらも.NET Framework 2.0で実装されました.

特色

データの要素をリンクリストに繋げていくリスト構造です.
要素の挿入・削除がある場合,内部的にはリンクの付け替えをするだけです.
【メリット】
値の挿入・削除が高速に行える.
【デメリット】

インデックスによる参照ができないため,ランダムなアクセスが苦手.

猫でもわかるC#プログラミング 第3版 (猫でもわかるプログラミング)
粂井 康孝
SBクリエイティブ
売り上げランキング: 44,075

考察

明確に使う型が決まっている場合にはArrayListを使うより,Listを使う方が良いです.
多くの場合格納する型は決まっていると思うので,結局普段はListを使えばいいのかなと思います.
LinkedListとListの使い分けについては,要素の挿入や削除が多い場合はLinkedList,要素の参照が多い場合はListという感じでしょうか.
パフォーマンスを向上するためにも,こういったチューニングが自然にできるようになりたいですね.わかりやすい内部的な仕組みに関する説明は@ITに良いページがあったので以下に挙げておきます.

参考サイト


0 件のコメント :

コメントを投稿