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