indizierte Instanzen einer Klasse
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von BiedermannS.
-
-
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Nein, sonder so etwas. Sollte aber keine Fehlmeldung produzieren.
VB.NET-Quellcode
- Public Class Feld
- Private FeldValue() As Ziffer ' = Class Ziffer
- Private _z() As Ziffer
- ' Eigenschaft
- Public Property Zi(ByVal I As Integer) As Ziffer
- Get
- Return _z(I)
- End Get
- Set(ByVal FeldValue As Ziffer)
- _z(I) = FeldValue
- End Set
- End Property
- ' Methode
- Public Sub LöschenEine(ByVal ZifferA As Integer)
- Zi(ZifferA).Löschen("Reihe")
- Zi(ZifferA).Löschen("Spalte")
- End Sub
- 'End Sub
- ' Konstruktor
- Public Sub New()
- For I = 0 To 2
- Zi(I) = New Ziffer
- Next
- End Sub
- End Class
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Investmentclub“ ()
-
Investmentclub schrieb:
Sollte aber keine Fehlmeldung produzieren.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
VB.NET-Quellcode
- Public Class Ziffer
- Private ReiheValue As Boolean
- Private SpalteValue As Boolean
- ' Eigenschaft
- Public Property Reihe() As Boolean
- Get
- ' Gets the property value.
- Return ReiheValue
- End Get
- Set(ByVal Value As Boolean)
- ' Sets the property value.
- ReiheValue = Value
- End Set
- End Property
- Public Property Spalte() As Boolean
- Get
- ' Gets the property value.
- Return SpalteValue
- End Get
- Set(ByVal Value As Boolean)
- ' Sets the property value.
- SpalteValue = Value
- End Set
- End Property
- ' Methode
- Public Sub Löschen(Optional ByVal BereichA As String = "Reihe", Optional ByVal BereichB As String = "")
- If BereichA = "Reihe" Or BereichB = "Reihe" Then
- Me.ReiheValue = False
- End If
- If BereichA = "Spalte" Or BereichB = "Spalte" Then
- Me.SpalteValue = False
- End If
- End Sub
- ' Konstruktor
- Public Sub New()
- ' Set the property value
- Me.Reihe = True
- Me.Spalte = True
- End Sub
- End Class
-
Investmentclub schrieb:
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Investmentclub schrieb:
hilft mir aber nicht wirklich weiter zumal "ENUM" nicht für den Typ "Boolean" geeignet ist.
???
If BereichA = MeineEnum.Spalte orelse BereichB = MeineEnum.Spalte then
Du deklarierst ein Array OHNE Dimension und greifst dann auf den Index zu. Wie soll das bitteschön gehen? -
Willst du eine Indizierte Instanz oder eine indizierte Eigenschaft??
bei zweiterem, entweder:
VB.NET-Quellcode
- Sub Main()
- Dim t As New test
- t.array1 = {1, 2, 3, 4, 5}
- MsgBox(t.array1(3))
- t.array1(3) = 7
- MsgBox(t.array1(3))
- End Sub
- Public Class test
- Private _array1 As Integer()
- Public Property array1() As Integer()
- Get
- Return _array1
- End Get
- Set(value As Integer())
- _array1 = value
- End Set
- End Property
- End Class
oder als List(of T)
VB.NET-Quellcode
- Sub Main()
- Dim t As New test
- t.array1 = {1, 2, 3, 4, 5}.ToList
- MsgBox(t.array1(3))
- t.array1(3) = 7
- MsgBox(t.array1(3))
- End Sub
- Public Class test
- Private _array1 As New List(Of Integer)
- Public Property array1() As List(Of Integer)
- Get
- Return _array1
- End Get
- Set(value As List(Of Integer))
- _array1 = value
- End Set
- End Property
- End Class
SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=
Weil einfach, einfach zu einfach ist! -
mir ist die Frage noch ganz unklar. In c# gibts zB. die Möglichkeit, einen Indexer zu proggen - in vb nähme man dafür einfach das Default-Schlüsselwort her.
Aber wie gesagt: Unklar, was dein Ziel ist: "Indizierte Instanzen einer Klasse" findest du in jedem Array, aber zB auch in Dictionaries. -
-
ErfinderDesRades schrieb:
mir ist die Frage noch ganz unklar.
Ich versuche es noch mal mit einem Beispiel:
Ich möchte die Instanzen X1,X2.......Xn durch Zi(I) ersetzen.
So dass aus der Anweisung Fe.X1.Löschen() Fe.Zi(1).Löschen() wird.
X1 und X2 funktionieren.
Die Eigenschaft von X1 ist definiert als:
-
-
BiedermannS schrieb:
Willst du eine Indizierte Instanz oder eine indizierte Eigenschaft??
bei zweiterem, entweder:
VB.NET-Quellcode
- Sub Main()
- Dim t As New test
- t.array1 = {1, 2, 3, 4, 5}
- MsgBox(t.array1(3))
- t.array1(3) = 7
- MsgBox(t.array1(3))
- End Sub
- Public Class test
- Private _array1 As Integer()
- Public Property array1() As Integer()
- Get
- Return _array1
- End Get
- Set(value As Integer())
- _array1 = value
- End Set
- End Property
- End Class
Hab ich doch schon geschrieben....SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=
Weil einfach, einfach zu einfach ist! -
BiedermannS schrieb:
Um in Deinem Beispiel zu bleiben. Ich suche nach einer Lösung in der sinngemäss
funktioniert.Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Investmentclub“ ()
-
-
Ich stehe jetzt völlig auf’n Schlauch.
In dem o.g. Beispiel ist t(2) die Bezeichnung einer Instanz von TingsBums,
man könnte diese Bezeichnung durch tabc ersetzen ohne Funktionsänderung,
t(2) ist nicht das 3.Element eines Array.
Sondern t(2).array1(3) ist das 4. Element einers 1 dimensionaler Array.Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Investmentclub“ ()
-
wie gesagt: ich habe erheblich Schwierigkeiten, zu verstehen, was du willst.
jdfs. mein post ist eine Lösung der Anforderung post#15
Investmentclub schrieb:
t(2) ist nicht das 3.Element eines Array.
HingegenInvestmentclub schrieb:
Sondern t(2).array1(3) ist das 4. Element einers 1 dimensionaler Array.
Edit: Ah - jetzt habichs: du hast doch recht (ebenso wie ich): .array1(3) ist das 4. Element eines 1 dimensionalen Arrays.Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()
-
Ich mische mich auch mal ein xD
So wie ich "Ich möchte die Instanzen X1,X2.......Xn durch Zi(I) ersetzen." verstehe willst du an einer zentralen Stelle Zugriff auf alle jemals erstellten Instanzen deiner Klasse haben. Ist das richtig?
Somit hättest du immer auf alle Instanzen zugriff via:
Bzw fällt mir da grade noch eine Möglichkeit ein, wie ich Post#12 deuten kann:
Du hast mehrere Variablen, die nicht in einem Array hinterlegt sind. Diese willst du aber trotzdem mit einer Schleife durchlaufen um so Code einzusparen?
Edit: und wenn das dein Problem nicht löst, dann erzähl doch mal, was du genau vor hast. Das Problem zu umschreiben ist eher hinderlich.Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FreakJNS“ ()
-
-
Ähnliche Themen
-
VBNooby - - Sonstige Problemstellungen
-
4 Benutzer haben hier geschrieben
- Gast (12)
- BiedermannS (6)
- ErfinderDesRades (5)
- RodFromGermany (3)