VB.NET-Tipp 0118: Generische Baumstruktur
von Spatzenkanonier
Beschreibung
Mit nur wenigen Zeilen lässt sich eine leistungsfähige und flexible Datenklasse für baumartige Strukturen schaffen.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 | .NET-Version(en): Visual Basic 2005, Visual Basic 2008 | Download: |
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' Projektversion: Visual Studio 2005 ' Option Strict: An ' ' Referenzen: ' - System ' - System.Data ' - System.Windows.Forms ' - System.Xml ' ' Imports: ' - Microsoft.VisualBasic ' - Microsoft.VisualBasic.ControlChars ' - System.Collections.Generic ' - System.Windows.Forms ' ' ############################################################################## ' ################################ Module1.vb ################################## ' ############################################################################## Imports System.Diagnostics Public Module Module1 Public Sub main() Dim Vehicles As New Tree(Of String)("Vehicle") With Vehicles With .Add("OnWater") .Add("SurfBoard") With .Add("Ship") With .Add("Motorboat") .Add("Steamboat") .Add("Submarine") .Add("Tanker").Add("Tanker2").Add("Tanker3") .Add("Speedboat") End With With .Add("Sailboat") .Add("Cog") .Add("Frigate") .Add("Catamaran") End With End With End With With .Add("OnAir") .Add("Plane") With .Add("Rocket") .Add("Challenger") .Add("Apollo 13") End With .Add("Balloon") End With With .Add("OnEarth") .Add("Horse") With .Add("Car") .Add("Trabant") End With .Add("Bike") .Add("Foot") End With End With EnumerateTree(Vehicles) ' Hier kann man die Ausgabe im Ausgabefenster angucken Stop End Sub Sub EnumerateTree(ByVal Parent As Tree(Of String)) ' Rekursiver Durchgang zur Ausgabe im Ausgabefenster Debug.WriteLine(Parent.Value) ' mit Einrückung Debug.Indent() For Each Child As Tree(Of String) In Parent EnumerateTree(Child) Next Debug.Unindent() End Sub End Module ' ############################################################################## ' ################################# TreeOf.vb ################################## ' ############################################################################## <System.Serializable()> _ <System.Diagnostics.DebuggerDisplay("Value: {Value}")> _ Public Class Tree(Of T) : Inherits List(Of Tree(Of T)) Protected _value As T Public Property Value() As T Get Return _value End Get Set(ByVal value As T) _value = value End Set End Property Public Sub New(ByVal Value As T) Me.Value = Value End Sub Public Overloads Function Add(ByVal Value As T) As Tree(Of T) Add = New Tree(Of T)(Value) Me.Add(Add) End Function End Class
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.