Запутался, почему эта функция не вызывается? - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь вызвать эту функцию в процедуру и не понимаю, почему это не работает, я посмотрел, как отформатировать вызов функции, и не понимаю своих ошибок.

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 Ответ

1 голос
/ 19 апреля 2019

Вы можете настроить этот код немного:

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

Он вернется, если элемент находится в массиве.

Если ваш файл очень очень большой и вывыполняя много поисков, я рекомендую хранить в HashSet вместо массива для поиска O (1) вместо O (n), который вы получаете.

Я заметил, что ваш фондовый массив должен быть объявлен вуровень класса, а не уровень метода, доступный другим методам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...