【问题标题】:How do I return a value from 2 overloaded functions with different return types?如何从具有不同返回类型的 2 个重载函数返回一个值?
【发布时间】:2019-10-22 11:35:48
【问题描述】:

我创建了两个函数来从文本文件中导入(制作)一个数组。它们具有相同的函数名称,但参数数量不同。它们的返回值也不同,因为一个 importArray 函数返回一维数组,另一个返回二维数组。

Overloads Function importArray(fileName As String) As Array

Overloads Function importArray(fileName As String, splitter As Char) As Array

Sub Main()
        Dim getArray As New MakeArray
        Dim printArray() As String = getArray.importArray("array.txt")

        For i = 0 To printArray.Length - 1
            'printArray
        Next

        Console.ReadKey()
End Sub

我似乎无法理解这一点。我可以在调用函数时输入2个参数或1个就可以了,但是我不知道如何指定要调用哪个函数,因为在打印数组时我不知道是使用一维数组还是二维数组.我不能做 2 个 for 循环,因为使用一维或 2 会引发错误“表达式不是方法”,所以我不确定如何解决这个问题。

有没有一种方法可以通过读取文本文件来确定我是使用一维数组还是二维数组?我想让代码尽可能高效。

谢谢!

【问题讨论】:

  • 如果数组中的区别在于一个实际上是另一个数组,那么也许创建一个具有与列匹配的属性的类并使用 List(Of thatClass) 会更容易.

标签: arrays vb.net


【解决方案1】:

首先,不要那样使用Array 类型。如果方法返回String 数组,那应该是返回类型。如果它返回一个 2D String 数组,那么它应该是返回类型。

Overloads Function ImportArray(fileName As String) As String()

Overloads Function ImportArray(fileName As String, splitter As Char) As String(,)

当您调用其中一个函数时,您将其分配给您正在调用的方法的适当类型的变量。只需将它们视为两种不同的方法。然后,您可以使用两个嵌套循环的单个循环来遍历数据。

Dim arr1 As String() = getArray.ImportArray(fileName)

For i = 0 To arr1.GetUpperBound(0)
    '...
Next

Dim arr2 As String(,) = getArray.ImportArray(fileName, splitter)

For i = 0 To arr2.GetUpperBound(0)
    For j = 0 To arr2.GetUpperBound(1)
        '...
    Next
Next

【讨论】:

  • 哦,这很有意义。直接从我头上飞了过去。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 2016-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多