0

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

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

Wherelimit被预定义为有效的正数Integer。我得到InvalidCastException. 我该怎么做呢?或者另一种创建具有起始索引的Double数组的方法?< 0

4

1 回答 1

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)
于 2012-10-20T09:23:47.193 回答