ProgrammingVB.NET 開発者

Visual Basicでは配列とコレクションはどのように実装されますか?標準配列、Collection、ArrayList、List(Of T)の機能と用途を比較してください。

Hintsage AIアシスタントで面接を突破

回答。

Visual Basicにはデータセットを整理するためのいくつかの方法があります:

  • 標準配列 (Dim arr(10) As Integer): 静的サイズ、インデックスによる高速アクセス、動的に拡張できません。

  • Collection (オブジェクトコレクション): 動的に拡張可能、任意の型の要素を格納できる(しかし厳密な型付けはなし)、キーとインデックスによるアクセス、For Eachをサポート。

  • ArrayList (VB.NETで): 旧式のコレクション、Object型のオブジェクトを格納、ジェネリックをサポートしていない(Generic)、型キャストが必要。

  • List(Of T) (VB.NETで): 型付きコレクション、動的サイズ、高速アクセス、LINQをサポート、データ型に安全。

使用例:

標準配列:

Dim numbers(4) As Integer numbers(0) = 10

Collection:

Dim coll As New Collection() coll.Add("apple") coll.Add(123) For Each item In coll Debug.Print(item) Next

ArrayList:

Dim arrList As New ArrayList() arrList.Add("abc") arrList.Add(123)

List(Of T):

Dim list As New List(Of Integer)() list.Add(10) list.Add(20) For Each num As Integer In list Console.WriteLine(num) Next

裏の質問。

ArrayListを使用する際にList(Of T)と比較してどのような主要な問題が発生する可能性がありますか?

回答: ArrayListは要素をObjectとして格納するため、要素にアクセスする際に明示的な型キャストが必要で、実行時にInvalidCastExceptionが発生する可能性が高まります。List(Of T)はコンパイル時に厳密な型検査を提供し、そのようなエラーを排除します。

Dim arrList As New ArrayList() arrList.Add(100) ' Dim s As String = arrList(0) ' 実行時エラー Dim n As Integer = CType(arrList(0), Integer) ' OK

テーマに関する知識不足からの実際のエラーの例。


物語

金融システムでは動的サイズのデータを格納するために標準配列が活発に使用されていました。事前に割り当てたサイズを超えると、配列は「切り捨てられ」てしまい、ピーク時のトランザクションが失われていました。


物語

ArrayListを使用して文字列と数値をコレクションに追加し、その後要素の合計を計算しようとした結果、型キャスト時に例外が発生し、アプリケーションがクラッシュしました。なぜなら、文字列と数値を足し算することはできないからです。


物語

Collectionを注文クラスの保存に使用しましたが、要素の型を確認していませんでした。あるモジュールで誤ってテキストを注文オブジェクトの代わりに追加し、不正なオブジェクトのメソッドを呼び出そうとしたため、ビジネスロジック全体が失敗しました。