Moin moin. Ich möchte gerne zur Vereinfachung der Programmierung eine Array Variable bestehend aus mehreren Typen nutzen (vb.net). Wenn ich das Richtig sehe, brauche ich dazu eine Klasse und kann dann eine Variable vom Typ der Klasse deklarieren. Wenn ich das ohne Array mache klappt das auch schon, was ich da gebastelt habe. Aber warum geht das nicht mit einem Array? Falsche Syntax?
Als Beispiel hab ich mal das typische Telefonbuch Problem genommen:
Public Class Kontakte
Private m_strName As String
Private m_nTelefonNummer As Integer
Property Name() As String
Get
Return m_strName
End Get
Set(ByVal strValue As String)
m_strName = strValue
End Set
End Property
Property TelefonNummer() As Integer
Get
Return m_nTelefonNummer
End Get
Set(ByVal nValue As Integer)
m_nTelefonNummer = nValue
End Set
End Property
End Class
Public Class Form1
Sub Verarbeitung()
'Das hier funktioniert
Dim Telefonbuch As new Kontakte
Telefonbuch.Name = „Es geht, juhu!“
Telefonbuch.TelefonNummer = 12345
'Aber warum das hier nicht?
Dim Telefonbuch(10) As Kontakte
Telefonbuch(0).Name = „Hans Wurst“
Telefonbuch(0).TelefonNummer = 12345
Telefonbuch(1).Name = „Max Mustermann“
Telefonbuch(1).TelefonNummer = 23456
Telefonbuch(2).Name = „Willi Winzig“
Telefonbuch(2).TelefonNummer = 76543
so kann das auch nichts werden!
Jede Klasse muss instanziert werden.
Eine Klasse instanzierst du in der Form
Dim DeineVariable as NEW DeineKlasse
Machst du dies nicht so hast du keinen Zugriff auf die Klasse, es sei denn du hast dort Methoden implementiert die Shared sind.
Anbei ein kleines Demo, wie es klappt
Option Explicit On
Option Infer On
Option Strict On
Public Class Form1
Private T(10) As Kontakte
Private Sub Form1\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
For i As Byte = 0 To 10
T(i) = New Kontakte
Next
End Sub
Private Sub Button1\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
T(0).Name = "Alex"
T(8).Name = "Peter"
T(6).TelefonNummer = 1231234
T(0).TelefonNummer = 43214234
'etc.
End Sub
Private Sub Button2\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
MsgBox(T(8).Name.ToString)
End Sub
End Class
Public Class Kontakte
Private m\_strName As String
Private m\_nTelefonNummer As Integer
Property Name() As String
Get
Return m\_strName
End Get
Set(ByVal strValue As String)
m\_strName = strValue
End Set
End Property
Property TelefonNummer() As Integer
Get
Return m\_nTelefonNummer
End Get
Set(ByVal nValue As Integer)
m\_nTelefonNummer = nValue
End Set
End Property
End Class