Array.AsReadOnlyメソッドは読み取り専用のラッパーを作成するだけであり、元となった配列が読み取り専用となるのではないため、元の配列に対しては依然として値を設定することが可能です。 元の配列を変更すると、作成したReadOnlyCollectionにもその変更が反映されます。
Array.AsReadOnlyメソッドで読み取り専用化した配列のオリジナルに対して変更を加えた場合
Imports System
Imports System.Collections.ObjectModel
Class Sample
Shared Sub Main()
Dim source() As Integer = {0, 1, 2, 3, 4}
' 配列を読み取り専用にする
Dim arr As ReadOnlyCollection(Of Integer) = Array.AsReadOnly(source)
' 元になった配列に変更を加える
source(0) = 5
' 読み取り専用コレクションの要素を列挙
For i As Integer = 0 To arr.Count - 1
Console.Write("{0}, ", arr(i))
Next
Console.WriteLine()
End Sub
End Class
実行結果
5, 1, 2, 3, 4,