【问题标题】:VB.NET - Return a 2D array of numbers from a functionVB.NET - 从函数返回一个二维数字数组
【发布时间】:2016-03-23 22:30:05
【问题描述】:

VB.NET - 从函数返回一个二维数字数组

我有一个函数可以在二维数组中生成一组 x 和 y 坐标,但我找不到返回坐标的方法。

这是我试图实现的简化版本,但这会产生以下错误:'Double(,)' 类型的值无法转换为'Double'。

Function myFunc(ByVal myVar As Double) As Double

    Dim myArr(2, 1) As Double

    myArr(0, 0) = 1 * myVar
    myArr(1, 0) = 2 * myVar
    myArr(2, 0) = 3 * myVar
    myArr(0, 1) = 4 * myVar
    myArr(1, 1) = 5 * myVar
    myArr(2, 1) = 6 * myVar

    Return myArr

End Function

我尝试了许多不同的方法,但只是 VB 的新手,可能会 缺少一些简单的东西。任何帮助将不胜感激。

【问题讨论】:

  • 错误信息告诉你出了什么问题。您的函数定义为As Double,但您正试图返回Double(,)。因此,定义函数As Double(,)
  • 如果我将函数更改为As Double(,),它仍然会产生相同的错误。我相信我将 myArr 定义为与函数返回定义不同但不知道如何纠正它。
  • 不在代码中显示你没有。它现在在其他地方放映不是吗?
  • @Shaun - 你为什么编辑这个问题使它无效?我把它回滚了。

标签: vb.net


【解决方案1】:

您需要返回Double(,),而不是Double。应该是:

Function myFunc(ByVal myVar As Double) As Double(,)

    Dim myArr(2, 1) As Double

    myArr(0, 0) = 1 * myVar
    myArr(1, 0) = 2 * myVar
    myArr(2, 0) = 3 * myVar
    myArr(0, 1) = 4 * myVar
    myArr(1, 1) = 5 * myVar
    myArr(2, 1) = 6 * myVar

    Return myArr

End Function

【讨论】:

  • 谢谢你,我第一次尝试它产生了同样的错误,但这是由于我调用函数的方法而不是函数本身。我的坏。
【解决方案2】:

我设法通过将函数和 myArr 定义从 Double 更改为 Object 来解决它。函数的结果是完整的数组,但存储为对象。不知道这是否是最好的方法,但它有效。

Function myFunc(ByVal myVar As Double) As Object

Dim myArr(2, 1) As Object

myArr(0, 0) = 1 * myVar
myArr(1, 0) = 2 * myVar
myArr(2, 0) = 3 * myVar
myArr(0, 1) = 4 * myVar
myArr(1, 1) = 5 * myVar
myArr(2, 1) = 6 * myVar

Return myArr

End Function

【讨论】:

  • 这不是要走的路。你应该返回Double(,),而不是Object
猜你喜欢
  • 1970-01-01
  • 2012-01-26
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多