VB.Net Tutorial/Generics/Generic Tree

Материал из VB Эксперт
Версия от 15:56, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Create generic tree

<source lang="vbnet">Imports System.Collections.Generic Imports System.ruponentModel public class Test

  public Shared Sub Main
       Dim family_tree As New Tree(Of MyNode)
       Dim root As TreeNode(Of MyNode) = family_tree.MakeRoot(New MyNode("Me"))
       Dim child1 As TreeNode(Of MyNode) = root.AddChild(New MyNode("Child 1"))
       Dim child2 As TreeNode(Of MyNode) = root.AddChild(New MyNode("Child 2"))
       child1.AddChild(New MyNode("Grandchild 1"))
       child1.AddChild(New MyNode("Grandchild 2"))
       child2.AddChild(New MyNode("Grandchild 3"))
       child2.AddChild(New MyNode("Grandchild 4"))
       Console.WriteLine(family_tree.ToString())
  End Sub

End class

Public Class MyNode

   Public Name As String
   Public Sub New(ByVal new_name As String)
       Name = new_name
   End Sub
   Public Overrides Function ToString() As String
       Return Name
   End Function

End Class Public Class Tree(Of data_type)

   Private m_Root As TreeNode(Of data_type) = Nothing
   Public Property Root() As TreeNode(Of data_type)
       Get
           Return m_Root
       End Get
       Set(ByVal value As TreeNode(Of data_type))
           m_Root = value
       End Set
   End Property
   Public Sub Clear()
       m_Root = Nothing
   End Sub
   Public Function MakeRoot(ByVal node_item As data_type) As TreeNode(Of data_type)
       m_Root = New TreeNode(Of data_type)(node_item)
       Return m_Root
   End Function
   Public Overrides Function ToString() As String
       Return m_Root.ToString()
   End Function

End Class Public Class TreeNode(Of data_type)

   Public NodeObject As data_type
   Public Children As New List(Of TreeNode(Of data_type))
   Public Sub New(ByVal node_object As data_type)
       NodeObject = node_object
   End Sub
   Public Function AddChild(ByVal node_item As data_type) As TreeNode(Of data_type)
       Dim child_node As New TreeNode(Of data_type)(node_item)
       Children.Add(child_node)
       Return child_node
   End Function
   Public Shadows Function ToString(Optional ByVal indent As Integer = 0) As String
       Dim txt As String
       txt = New String(" "c, indent) & NodeObject.ToString & vbCrLf
       " Add the children"s text.
       For Each child As TreeNode(Of data_type) In Children
           txt &= child.ToString(indent + 2)
       Next child
       Return txt
   End Function

End Class</source>

Me
  Child 1
    Grandchild 1
    Grandchild 2
  Child 2
    Grandchild 3
    Grandchild 4