在VB.NET 2012中将System.Array转换为Double()

时间:2012-10-20 07:03:36

标签: arrays vb.net

我想将System.Array类型的数组转换为Double()Double(,)(我已经知道要转换为哪一个)。有问题的代码行遵循

Dim kernel As Double() = CType(Array.CreateInstance(GetType(Double), _
  {2 * limit + 1}, {-limit}), Double())

limit预定义为有效的Integer。我得到了InvalidCastException。我该怎么做呢?或者使用Double起始索引创建< 0数组的另一种方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用Enumerable.Range方法创建一个单维数组,如下所示:

Dim start = 0
Dim count = 10

Dim singleArray = Enumerable.Range(start, count).ToArray()

要创建多维数组,您必须创建自己的扩展方法来修改集合,如下所示

Public Module Extensions
    <Runtime.CompilerServices.Extension()>
    Function SelectMultiDimension(Of T)(collection As IEnumerable(Of T), rows As Integer, cols As Integer) As T(,)
        Dim multiDimArray(rows - 1, cols - 1) As T
        Dim i As Integer = 0

        For Each item In collection
            If i >= multiDimArray.Length Then Exit For

            multiDimArray(i \ cols, i Mod cols) = item

            i += 1
        Next

        Return multiDimArray
    End Function
End Module

然后你可以这样使用它:

Dim mArray = Enumerable.Range(start, count).SelectMultiDimension(3, 4)