VB.NETの配列とリストの違いを徹底比較!初心者向けコレクション解説
生徒
「VB.NETで複数のデータをまとめて管理したいのですが、『配列』と『リスト』のどちらを使えばいいのでしょうか?」
先生
「VB.NETにはデータを扱う方法がいくつかあります。一番の違いは、後から中身の数を変えられるかどうかですね。」
生徒
「数を変えられるのがリストで、変えられないのが配列ということですか?」
先生
「その通りです!それぞれの特徴を詳しく見ていきましょう。」
1. 配列(Array)とは?
VB.NETにおける配列(はいれつ)とは、同じ種類のデータを一列に並べて管理するための仕組みです。イメージとしては、マンションの部屋のようなものです。マンションを建てるときに「3部屋作る」と決めたら、後から急に部屋を増やしたり減らしたりするのは大変ですよね。
配列も同じで、最初に「3つ分のデータを入れる場所を作る」と決めたら、その数は基本的に固定されます。プログラミング用語では、この場所の数を要素数(ようそすう)と呼びます。配列は非常にシンプルで動作が速いため、最初からデータの数が決まっているときに使われます。
2. リスト(List)とは?
リスト(List)は、配列をもっと便利にした「コレクション」の一種です。イメージとしては、ルーズリーフのノートのようなものです。ページが足りなくなれば新しい紙を足せますし、不要なページは破って捨てることができます。
VB.NETのプログラムを作っていると、「最初はデータがいくつあるか分からないけれど、とりあえずどんどん追加していきたい」という場面がよくあります。そんな時に大活躍するのがリストです。リストは、データの追加や削除を自由に行えるため、現代のプログラミングでは配列よりも頻繁に使われる非常に重要な機能です。
3. 配列の使い方とサンプルコード
まずは、配列の書き方を見てみましょう。配列を作るには、入れたいデータの型を指定し、カッコを使って「何個分か」を指定します。注意点として、VB.NETの配列は「0」から数え始めるというルールがあります。
' 3つの文字列が入る配列を作成します(0, 1, 2の3つ)
Dim colors(2) As String
' データを入れます
colors(0) = "赤"
colors(1) = "青"
colors(2) = "黄"
' 配列の中身を表示します
Console.WriteLine(colors(0))
Console.WriteLine(colors(1))
Console.WriteLine(colors(2))
実行結果は以下の通りです。
赤
青
黄
このように、決まった数のデータをきっちり管理したい場合に配列は適しています。
4. リストの使い方とサンプルコード
次に、リストの書き方です。リストを使うときは List(Of 型名) という書き方をします。これは「(指定した型)のリスト」という意味になります。データを追加するときは Add(アド)という命令を使います。
' 文字列のリストを新しく作ります
Dim shoppingList As New List(Of String)
' データを自由に追加できます
shoppingList.Add("牛乳")
shoppingList.Add("パン")
shoppingList.Add("たまご")
' リストの中身を順番に表示します
For Each item As String In shoppingList
Console.WriteLine(item)
Next
実行結果は以下の通りです。
牛乳
パン
たまご
リストなら、後から shoppingList.Add("リンゴ") と書くだけで、簡単にデータを増やすことができます。
5. 配列とリストの決定的な違い:サイズ変更
最大の比較ポイントはサイズ(要素数)の柔軟性です。
| 特徴 | 配列 (Array) | リスト (List) |
|---|---|---|
| 要素の数 | 最初に決めたら固定 | 自由に追加・削除できる |
| データの追加 | 苦手(作り直しが必要) | 得意(Addメソッド) |
| 動作の速度 | 非常に高速 | わずかに遅い(気にならない程度) |
配列でサイズを変えようとすると ReDim という命令を使って作り直す必要がありますが、これはパソコンにとって少し負担がかかる作業です。一方で、リストは最初からサイズが変わることを前提に作られているため、柔軟なプログラムが書けます。
6. データの削除が得意なのはどっち?
データを消す作業についても、大きな違いがあります。配列の場合、ある部屋の中身を空っぽにすることはできても、その「部屋自体」を消して詰めることはできません。
リストであれば、RemoveAt(リムーブ・アット)という命令を使うことで、指定した場所のデータを消し、後ろにあるデータを自動的に前に詰めさせることができます。これは、名簿の整理やゲームの敵キャラクター管理など、動的に中身が変わるシステムにおいて非常に便利な機能です。
7. どちらを使うべきか迷った時の判断基準
プログラミング未経験の方が最初に迷ったら、「基本的にはリスト(List)を使う」と考えて間違いありません。現代のパソコンは性能が高いため、リストを使ったことによる速度の低下を人間が感じることはほとんどありません。
逆に、配列を使うのは以下のような限定的な場面です。
- 「月曜日から日曜日まで」のように、数が絶対に変わらないことが分かっている時。
- 大量の数値を一瞬で計算する必要があり、極限までスピードを追求したい時。
- 他のシステムとのやり取りで、どうしても配列形式で渡す必要がある時。
迷ったら「便利なリスト」、こだわりたいなら「シンプルな配列」と覚えておきましょう。
8. コレクションを操作する便利な機能
リストのようなデータの集まりを、専門用語でコレクションと呼びます。VB.NETには、このコレクションを操作するための便利な道具がたくさん用意されています。
例えば、リストの中身を並び替えたり(ソート)、特定の条件に合うものだけを探したりする作業も、リストなら標準の機能として備わっています。これらは配列でも可能ですが、リストの方がより簡単に、より短いコードで実現できるようになっています。初心者の方はまずリストを使いこなし、データの塊を扱う感覚を掴んでいきましょう。
Dim numbers As New List(Of Integer) From {5, 2, 8, 1}
' 小さい順に並び替えます
numbers.Sort()
' 結果を確認
For Each n In numbers
Console.WriteLine(n)
Next
1
2
5
8
9. インデックス(番号)でのアクセス
配列もリストも、共通しているのは「番号(インデックス)」を使って特定のデータを指定できる点です。1番目のデータは (0)、2番目のデータは (1) と指定します。
この番号指定を間違えて、存在しない番号(例えば3つしかないのに10番目など)を指定してしまうと、プログラムがびっくりして止まってしまいます。これを「インデックスが範囲外です」というエラーと呼びます。これは初心者が必ず一度は通る道ですので、エラーが出ても「番号を間違えたかな?」と冷静にチェックしてみてください。
10. まとめ:配列とリストを使い分けよう
VB.NETでのプログラミングにおいて、配列とリストの使い分けは脱初心者のための第一歩です。固定された「配列」と自由自在な「リスト」、それぞれの特徴を理解することで、より効率的で美しいコードが書けるようになります。
まずは、使い勝手の良いリストから使い始めて、徐々に配列のメリットも感じていくのが上達の近道です。何度もコードを書いて、データの扱い方に慣れていきましょう!