为什么不调用此函数感到困惑?

时间:2019-04-18 22:59:00

标签: vb.net function

我正在尝试将此函数调用到过程中,并对为什么此函数不起作用感到困惑,我一直在寻找如何格式化函数调用的格式,并且不理解我的错误。

Structure Stock
    Dim category As String
    Dim price As Integer
    Dim size As String
    Dim sku As String
    Dim color As String
End Structure

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim stockArray() As String =
        IO.File.ReadAllLines("stockInventory.txt")
End Sub

Private Sub btnNewSave_Click(sender As Object, e As EventArgs) Handles btnNewSave.Click
    Dim answer
    answer = check(sku, stockArray)

End Sub

Function check(sku, stockArray) As Boolean
    Dim flag As Boolean
    Dim numVar = -1

    numVar = Array.IndexOf(stockArray, txtSKU.Text)

    If numVar = -1 Then
        flag = False
    End If

    If numVar <> -1 Then
        flag = True
    End If

    Return flag
End Function

这让我出错了,

  未声明

sku。由于受到保护,可能无法访问   级别

我有一个结构,其中sku被定义为字符串。我是否必须在此子句中再次声明它才能起作用?

1 个答案:

答案 0 :(得分:1)

您可以对此代码进行一些微调:

Function check(ByVal stockArray as String()) As Boolean
    Return Array.IndexOf(stockArray, txtSKU.Text) >= 0
End Function

如果元素在数组中,它将返回。

如果文件很大,并且要进行很多搜索,建议您将其存储在HashSet中,而不要存储在数组中以进行O(1)搜索,而不是要获取的O(n)。

我注意到您的股票数组必须在类级别(而不是方法级别)上声明,才能被其他方法访问。