コレクション初期化子は、もともとC# 3のLINQおよびVB 9と共にリリースされることになっていた。C#がコレクション初期化子を取得した一方で、VBのリリースではそれらは削除された。その一因としては、 Visual BasicチームがVBのバージョンをさらに強力にしたかったことがある。
C#では、コレクション初期化子は既知のタイプに限定されている。VBでは、Microsoftはinferred typesについてもサポートする意向を示している。これにより、デベロッパが以下のようなステートメントを記述することが可能になるかもしれない。
Dim x = {1, 2, 3, 4}
Dim y = {{"a", 1}, {"b", 2}, {"c", 3}, {"d", 4}}
Dim z = {{1, 2}, {3, 4}, {5, 6}, {7, 8}}
しかし、この構文が正確には何を意味しているのかという議論が沸き起こっている。いかなる場合でも配列を返すのだという声もあれば、リストやディ クショナリーを参照する必要があるという意見もある。こうしたことの原因の1つに、VBには迅速にタプルを定義する明確な構文がないことが挙げられる。 さらに機能的なプログラミングや動的タイピングへと移行するにつれて、ますますタプルは重要になっている。
Anthony Green氏はとがった配列と直角の配列の問題を取り上げている。rectangular arrays. 例では変数 z は整数(,) または整数()() (C# int[,] および int[][])。
Bill McCarthy氏は、 1次元のコレクションが有名であることを示唆している。
Dim x = {1, 2, 3, 4} 'List(Of Int32)
Dim x() = {1, 2, 3, 4} 'array of Int32
ディクショナリーを扱うために、Ninputerが以下のアプローチを提供している。
Dim d = {1:"Hello", 2:"World" }
Paul Vick氏のブログ(source)で、続きを参照することができる。
原文はこちらです: