配列がICollectionなどのインターフェイスを実装しているといっても、その機能のすべてがサポートされるわけではありません。 たとえば、配列をICollectionインターフェイスにキャストして操作することは可能ですが、ICollection.AddやICollection.Removeなどのメソッドを呼び出して配列のサイズを変更するような操作を行うことはできません。 このような操作を行おうとした場合にはNotSupportedExceptionがスローされます。
ICollectionインターフェイスを介して配列ではサポートされないメソッドを呼び出す場合
Imports System
Imports System.Collections.Generic
Class Sample
Shared Sub Main()
Dim arr As Integer() = {0, 1, 2, 3, 4}
' 配列をICollection(Of T)インターフェイスにキャスト
Dim coll As ICollection(Of Integer) = arr
' ICollectionインターフェイスを介して要素を追加しようとしても、
' 配列は固定長であるためNotSupportedExceptionがスローされる
coll.Add(5)
End Sub
End Class
実行結果
System.NotSupportedException: コレクションは固定サイズです。 at System.SZArrayHelper.Add[T](T value) at Sample.Main(String[] args)
配列が実装するインターフェイスや他のコレクションとの特徴の違いについてはコレクションの種類と特徴 §.コレクションクラスの特徴を参照してください。