РЕДАКТИРОВАТЬ: Я уже знаю, что такое исключение нулевой ссылки. Что я не могу понять, так это как настроить мой код так, чтобы он считывал длину пустого массива, не вызывая исключение нулевой ссылки.
У меня есть форма, которая должна добавлять элемент в набор параллельных массивов при каждом нажатии кнопки «Отправить». Мне нужен способ убедиться, что индекс увеличивается, поэтому я написал код так, чтобы он получал длину одного массива и вычитал 1, чтобы получить индекс, хранящийся в переменной. Тем не менее, для первого элемента в массиве я получаю нулевую ссылку: 'Object reference not set to an instance of an object.'
Я не уверен, что делать, так как массивы определены на уровне класса и не может иметь какие-либо значения, пока что-то не будет добавлено к ним. Я не могу просто сказать, каково значение в myArray(0)
, потому что оно будет перезаписываться каждый раз, когда пользователь нажимает «отправить». Как я могу заставить это работать? Спасибо за любую помощь:)
Вот мой код:
Option Strict On
Public Class frmMain
'Declare arrays to store data
Dim CountyAndState() As String
Dim YearlyIncome() As Double
Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
'Validate inputs and assign data to arrays
'Reset colors for inputs
cboCountyState.BackColor = Color.White
txtYearlyIncome.BackColor = Color.White
'Declare variables
Dim strResidence As String
Dim dblIncome As Double
Dim intIndex As Integer
'Validate input
If Validation(CStr(cboCountyState.SelectedItem), txtYearlyIncome.Text) = True Then
'Assign values to variables
dblIncome = CDbl(txtYearlyIncome.Text)
strResidence = CStr(cboCountyState.SelectedItem)
'Get index for new array item
If CountyAndState.Length > 1 Then '*****THIS IS WHERE THE ERROR OCCURS******
intIndex = (CountyAndState.Length - 1)
Else
intIndex = 0
End If
'Add items to arrays
CountyAndState(intIndex) = strResidence
YearlyIncome(intIndex) = dblIncome
MessageBox.Show(CountyAndState(intIndex))
End If
End Sub