ну, конечно, вы можете сделать это просто:
Dim ds(100) as DataSet
Это будет работать. Однако набор данных может содержать несколько таблиц, что делает массив наборов данных 4-м размерным массивом (набор данных, таблица, строка, столбец). Если вам действительно нужны эти функции, вы можете создать массив, как указано выше, или использовать список массивов, или любой другой класс .net коллекции, который лучше всего соответствует вашим потребностям.
~~~~~~~~~~~~~~~~~~~~~~~~~~~ Редактировать, увидев ваши изменения ~~~~~~~~~~~~~~~ ~~~~~~~
Причина, по которой вы получаете исключение нулевой ссылки, состоит в том, что массив содержит ноль объектов, если вы объявляете его без номера. Если вы не знаете, сколько наборов данных вам понадобится во время разработки, вам, вероятно, следует подумать об использовании arraylist или одной из коллекций .net. Есть оператор, который вы могли бы выполнить: «Redim Preserve ds (ds.length)», который увеличит размер массива на 1, чтобы вы могли заполнить следующий, но я не рекомендую его. Это воссоздает весь массив в памяти, копирует значения, а затем удаляет старый.
~~~~~~~~~~~~~~~~~~~~~~~~~~ ArrayList версия ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~
Хорошо, вот как это будет выглядеть с ArrayList:
Dim dinfo As DirectoryInfo = New DirectoryInfo("c:\")
Dim finfo As FileInfo() = dinfo.GetFiles("*.xml")
Dim ds As New ArrayList()
For a As Integer = 0 To finfo.GetLength(0)
Dim tempDS As New DataSet
tempDS.ReadXml("c:\" + finfo(a).Name)
ds.Add(tempDS)
Next
~~~~~~~~~~~~~~~~~~~~~~~~~~ Версия массива ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
Вот как это будет выглядеть с обычным массивом, если вы не чувствуете себя комфортно с arrayList:
Dim dinfo As DirectoryInfo = New DirectoryInfo("c:\")
Dim finfo As FileInfo() = dinfo.GetFiles("*.xml")
Dim ds(-1) As DataSet
For a As Integer = 0 To finfo.GetLength(0)
ReDim Preserve ds(ds.Length)
ds(ds.Length - 1) = New DataSet()
ds(ds.Length - 1).ReadXml("c:\" + finfo(a).Name)
Next