はじめに
配列
配列は連続した値を保持し、添え字を使って値の登録・変更を行うためのデータ構造です。
宣言した要素数を格納するのに必要な領域を、まとめてメモリ上に確保します。
リスト
1次元配列とよく似ていますが、宣言時に空の変数が作成され、随時必要に応じて要素を追加していきます。
要素同士がチェーンで繋がっているようなイメージなので、途中でチェーンを切ったり繋ぎ変えることで、要素の挿入や削除が可能です。
ArrayListとList
ArrayListコレクション(.NET Frameworkの最初からある)のジェネリック版がListコレクションだ。どちらも主要なメソッドとして、Add/Remove/CopyTo/Sortメソッドなどを持っている。
- ArrayListはなんでもぶちこめるけど出す時にキャストしないといけない。
ArrayListクラスの要素にはどんな型でも格納できるが、取り出すときには必ずキャストしなければならない(Visual BasicではOption StrictをOnにした場合)。
- listは入れる型を決めるのでキャストする必要が無い、その代わりその型しか入れられない。
Listクラスの要素には特定の型しか格納できない代わりに、取り出すときのキャストは不要だ(ただし、インスタンスを作るときにObject型を指定すれば、ArrayListクラスと同じことになる)。
Listと配列
配列は固定長のデータを扱う時に適しているそうだ。
IReadonlyCollection
リードオンリーなコレクションという事なのでこれ引数にして使ってるメソッド内では変更されたりしないって事が分かるらしい、IEnumerableとの使い分け的なのも書いてある。ありがてえ。
コレクション関連難しい・・・。
何でもかんでもListを引数にするのよくないんだね、頑張って使い分けよう。