Enumerable.Repeat は 第一引数で得た値を、第二引数の指定数、繰り返し代入します。
気を付けなくてはならないのは、第一引数の処理の実行は1回だけという点です。第一引数の処理が、第二引数の指定数だけ実行されるわけではない点です。
したがって、第一引数が戻す型が参照型の場合、ひどい目にあう場合があります。
コード
Module Module1 Sub Main() Dim a() = Enumerable.Repeat(New Class1, 10).ToArray Console.WriteLine(String.Join("-", From x In a Select x.Value)) a(0).Value = 1 ' 要素のうち1つしか変更していない(つもり) Console.WriteLine(String.Join("-", From x In a Select x.Value)) End Sub End Module Class Class1 Sub New() Console.WriteLine("New!") End Sub Public Value As Integer End Class
結果
New! ← "New!" は一回しか表示されない 0-0-0-0-0-0-0-0-0-0 1-1-1-1-1-1-1-1-1-1 ← 全要素が"1"に変更されたかのように見える 続行するには何かキーを押してください . . .