Arrays Net使用字符串构造函数中使用的数组名称?
我有两组锯齿状数组,分别命名为P1到P6和Z1到Z6,它们的内容在p数组中是水果,在Z数组中是cars。我还有一个函数,可以从以下数组之一获取值:Arrays Net使用字符串构造函数中使用的数组名称?,arrays,vb.net,.net-4.0,Arrays,Vb.net,.net 4.0,我有两组锯齿状数组,分别命名为P1到P6和Z1到Z6,它们的内容在p数组中是水果,在Z数组中是cars。我还有一个函数,可以从以下数组之一获取值: Public Function retL(ByVal L As Array) Dim maxL As Integer = L.GetUpperBound(0) Dim numL As Integer = randomizer(maxL) Dim resL As String = L.GetValue(numL - 1)
Public Function retL(ByVal L As Array)
Dim maxL As Integer = L.GetUpperBound(0)
Dim numL As Integer = randomizer(maxL)
Dim resL As String = L.GetValue(numL - 1)
Return resL
End Function
五十、 在上面的代码中,由以下代码段构造:
Dim L As String = "P" & randomizer(6)
or
Dim L As String = "Z" & randomizer(6)
所以,我的问题是这些都不起作用。因为L被构造为字符串,但随后被retL作为数组调用,所以它失败了。如果我试图首先将L构造为数组,它将失败。如果我尝试将其作为字符串调用,它将失败。我不知所措,不知该从哪里着手。很明显,我试图做的是可能的,但我也很明显错过了一个重要的步骤,或者我没有掌握一些基本的概念
有什么建议吗?这里您真正想要的是一组数组。而不是:
Dim P1(n) As String
Dim P2(n) As String
'...
Dim P6(n) As String
'...
Dim Z6(n) As String
。。。其中“n”是数组的大小,您应该有如下内容:
Dim P(5, n) As String
Dim Z(5, n) As String
Public Function retL(ByVal L() As String) As String
Return L(randomizer(L.Length)-1)
End Function
Dim result As String = retL(P(randomizer(6) - 1)
请注意,我使用了5而不是6,因为在VB.Net中,数组的索引是零,而不是一,下标是最后一项的索引,而不是项数。因此Dim P(5,n)As String
提供了一个二维字符串数组,在第一维上有六个项
现在,您的函数应该如下所示:
Dim P(5, n) As String
Dim Z(5, n) As String
Public Function retL(ByVal L() As String) As String
Return L(randomizer(L.Length)-1)
End Function
Dim result As String = retL(P(randomizer(6) - 1)
您可以从当前代码中调用函数,如下所示:
Dim P(5, n) As String
Dim Z(5, n) As String
Public Function retL(ByVal L() As String) As String
Return L(randomizer(L.Length)-1)
End Function
Dim result As String = retL(P(randomizer(6) - 1)
下面是一个litle测试类,它可以做一些事情
Class TestRandomArrays
Private L As String()
Private randomizer As New Random()
Public Sub InitializeArrayWithRandomLength()
' Creates an array of length between 0 and 5
L = New String(randomizer.[Next](6) - 1) {}
End Sub
Public Sub FillArrayWithRandomText()
For i As Integer = 0 To L.Length - 1
L(i) = "P" & randomizer.[Next]()
Next
End Sub
Public Function ReturnRandomArrayItem() As String
Return L(randomizer.[Next](L.Length))
End Function
End Class
使用数组(索引)
语法通过其索引访问数组项
Next
方法周围的括号是由于Next
在VB中是一个关键字。它们告诉VB编译器Next
是一个标识符,而不是关键字
Random.Next(max)
返回一个介于0
和max-1
之间的整数
newstring(n){}
定义了索引范围为0..n
的数组,从而定义了长度为n+1
的数组
这不是一个锯齿状数组。锯齿数组是数组的数组,即结果变量(至少)有两个维度。尽量不要将数组本身视为数据类型。避免在代码中使用关键字
Array
。相反,请始终寻找某种特定类型的数组。感谢你们两位的解释。我在问题的开场白中说错话了:上一次尝试使用数组的数组来实现这个项目时,我发现了所有关于锯齿状数组的内容,VB.net显然非常讨厌这些数组,并且认为没有人应该使用它们。我认为在这两个答案之间,我已经具备了使我的项目更进一步所需的一切。请参阅我的另一个答案(尤其是更新)。很难解释如何使用锯齿数组,因为我在您的代码中没有看到任何可以用锯齿数组完成的内容。你能用二维数组来代替你的想法吗?这将有助于我们更好地理解您的问题,并为您提供一个解决方案。顺便说一句:你的函数应该有一个返回类型,比如公共函数retL(ByVal L作为数组)作为整数
。该函数的目的将更明确,如下所示。