помогите исправить программу на VB.net

программирование .net ООП vb VisualBasic

Пишу программу на VB.net (лабораторная работа)
в прошлой лабораторной было то же самое но через Module, сейчас надо сделать объектно ориентированную версию. Я просто убрал модуль, создал новый класс, в который закинул все что было в модуле, и остальную программу исправил, чтобы переменные и функции передавались по ссылке из нового класса(которым я заменил модуль)
но после компиляции вылезает ошибка, что возможна ссылка на нулл(NullReferenceExeption was Unhandled:Object reference not set to an instance of an object)

Вот код:
'Форма 1

Public Class form1
Dim champ As championship
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
Dim p As String
p = ""

champ.readfile("participans.txt", champ.n - 1, p)
champ.readfile("teams.txt", champ.k - 1, p)
champ.readfile("winners.txt", 3, p)
champ.sozdmas("winners.txt", 3, champ.twin)
champ.sozdmas("participans.txt", champ.n, champ.fam)
champ.sozdmas("teams.txt", champ.k, champ.nam)
champ.sozstrdmas("bets.txt", champ.n, champ.bet)
champ.S = champ.input(TextBox1)
For i = 0 To champ.n - 1
ListBox2.Items.Add(champ.fam(i))
Next

For i = 0 To champ.k - 1
ListBox1.Items.Add(champ.nam(i))
Next

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button2.Click
Dim twinstr As String, betstr As String
Dim m As Integer
ReDim champ.win(champ.n - 1)
twinstr = ""
betstr = ""
For i = 0 To 2
twinstr = twinstr + champ.twin(i)
Next
m = 0
champ.w = 0
For j = 0 To champ.n - 1
betstr = Replace(champ.bet(j), " ", "")
If twinstr = betstr Then
form2.ListBox1.Items.Add(champ.fam(j))
m = m + 1
champ.win(champ.w) = champ.fam(j)
champ.w = champ.w + 1
End If
Next
champ.S = champ.S \ m
champ.output(CStr(champ.S) + "$", form2.TextBox1)
Me.Hide()
form2.Show()
End Sub


'Процедура для окончания работы программы
Private Sub Button3_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button3.Click
Me.Close()
form2.Close()
End Sub

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
Me.Hide()
form2.Show()
End Sub

End Class



Примечание:
'Форма 2
Public Class form2
Dim champ As championship
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
champ.writefile("awardee.txt", champ.win, champ.w)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button2.Click
Me.Close()
form1.Close()
End Sub

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
Me.Hide()
form1.Show()
End Sub
End Class

Примечание:
Option Strict On
Option Explicit On
Imports System.IO

Public Class championship

Public n As Integer 'Количество людей
Public k As Integer 'Количество команд
Public w As Integer 'Количество победителей
Public S As Integer 'Общий призовой фонд
Public fam() As String 'Фамилии участников тотализатора
Public nam() As String 'Названия команд
Public twin() As String 'Массив из команд-победителей
Public win() As String 'Массив из победителей тотализатора
Public bet() As String 'Массив из ставок

Sub readfile(ByVal filename As String, ByRef nu As Integer, _
ByRef p As String)
'создание потока для чтения из текстового файла
Dim f = New StreamReader(filename)
Dim line As String

line = ""

p = "" 'строка с исходными данными
nu = 0 'количество строк в файле
Try
Do While Not f.EndOfStream 'пока не достигнут конец потока
line = f.ReadLine() 'чтение строки из файла в line
nu = nu + 1
p = p & line & vbNewLine
Loop
Dim bet() = Split(line, vbNewLine)
f.Close() 'закрытие потока
Catch ex As Exception
MsgBox("Невозможно прочитать данные из файла")
End Try
End Sub

' Процедура построчной записи в текстовый файл массива победителей
Sub writefile(ByVal filename As String, ByVal mas() As String, _
ByVal nu As Integer)
'создание нового текст. файла и потока wf для записи в файл
Dim wf As StreamWriter = File.CreateText(filename)
Dim st As String
For i = 0 To nu - 1
st = mas(i) + " " + CStr(S) + "$"
'запись сведений об одном победителе в текстовый файл
wf.WriteLine(st)
Next
wf.Flush() : wf.Close() 'очистка и закрытие потока
End Sub

Sub sozdmas(ByVal filename As String, ByVal nu As Integer, _
ByRef namemass() As String)
Dim p, i As Integer
ReDim namemass(nu - 1)
Dim line As String
'создание потока для чтения из текстового файла
Dim f As New StreamReader(filename)
Try
i = 0
Do While Not f.EndOfStream 'пока не достигнут конец потока
line = f.ReadLine() 'чтение строки из файла в line
line = line + " " 'добавляем пробел в конец строки
p = line.IndexOf(" ") 'p-позиция первого пробела
'в переменной line подстрока до первого пробела-это
'фамилия
namemass(i) = line.Substring(0, p)
'удаление из строки line фамилии с пробелом
line = line.Remove(0, p + 1)
i = i + 1
Loop
f.Close()
Catch ex As Exception
MsgBox("Невозможно прочитать данные из файла")
End Try
End Sub

Sub sozstrdmas(ByVal filename As String, ByVal nu As Integer, _
ByRef namemass() As String)
Dim i As Integer
Dim line As String
line = ""
'создание потока для чтения из текстового файла
Try
i = 1
For i = 0 To n - 1 'пока не достигнут конец потока
bet = File.ReadAllLines(filename) 'чтение строки из файла в line
i = i + 1
Next
Catch ex As Exception
MsgBox("Невозможно прочитать данные из файла")
End Try
Dim mas = Split(line, vbNewLine)

End Sub

Private championship As String

Function input(ByVal T As TextBox) As String
Return T.Text
End Function

Примечание:
Sub output(ByVal z As String, ByVal T As TextBox)
T.Text = z
End Sub

Public Property champ() As String
Get
' Gets the property value.
Return championship
End Get
Set(ByVal Value As String)
' Sets the property value.
championship = Value
End Set
End Property

Public Sub Capitalize()
' Capitalize the value of the property.
championship = UCase(championship)
End Sub

Sub New(ByVal champ As String)
' Set the property value.
Me.champ = champ
End Sub


End Class

Заранее спасибо, если кто-то сможет помочь.
Ответы:
Dim champ As championship - необходимо создать экземпляр класса - Dim champ As New championship


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.