首页 > 解决方案 > 困惑为什么这个函数不调用?

问题描述

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

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 被定义为一个字符串。我是否必须在这个 sub 中再次声明它才能工作?

标签: vb.netfunction

解决方案


您可以稍微微调此代码:

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

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

如果您的文件非常大并且您正在执行多次搜索,我建议存储在 HashSet 而不是数组中以获得 O(1) 搜索,而不是您得到的 O(n)。

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


推荐阅读