gpt4 book ai didi

vb.net - VB.NET 中的 OOP - 子级、父级、父级

转载 作者:行者123 更新时间:2023-12-04 18:52:47 24 4
gpt4 key购买 nike

我想在这里用 VB 做一些我想我不明白如何做的事情。抱歉,我不太擅长 OOP。

我有很多正在创建的东西,它们有两个值 - parent 姓名和 child 姓名(是的,真实的人!)。

所以它会是这样的:

Public Class Child
Public Property ParentName As String
Public Property ChildName As String
End Class

然后:

Public Class Parent
Public Property ParentName As String
Public Property ChildName() As String
End Class

然后我需要将它们添加到一个 Parents 类中,其中一个 Parent 可以有一个或多个 child 。

我首先添加一个 Child。如果该 child 的父名称已经存在,只需将 child 的名称添加到该父名称,但如果不存在,则创建一个新的父名称(与该子名称)。然后将所有 parent 添加到 parent 集合中(以及他们的 1 个或多个 child )。

结果列表看起来像这样:

parent :

  1. 家长:乔纳森·默里
    1. child :卡尔·默里
  2. 家长:凯瑟琳·安德森
    1. child :史蒂文·安德森
    2. child :黛博拉·安德森
    3. child :托马斯·安德森
  3. 家长:徐静
    1. child :刘明
    2. child :刘宁

(注意最后一个 - parent / child 的姓氏​​不需要匹配 - 在这种情况下, child 使用父亲的姓氏而不是母亲的姓氏,但我们没有列出父亲)。

我将如何创建这些类型的类,以便我可以将子级添加到父级,将父级添加到父级,然后确保它可以使用 Linq 之类的东西进行查询?

提前致谢。

最佳答案

因为他们都是人,也许应该有一个 Person 类。每个人可能有一个母亲、一个父亲和一组 child 。这样您就可以创建几代人和各种星座的图表。

Public Class Person
Public Property Name As String
Public Property Mother As Person
Public Property Father As Person
Public Property Children As List(Of Person)
End Class

更新
这是一个更完整(并且经过一些修改)的示例,也许可以帮助阐明一些问题:

Person 类,稍作更改(将 Mother/Father 替换为 Parent,使 子级属性`ReadOnly´)

Public Class Person
Public Property Name As String
Public Property Parent As Person
Private _children As New List(Of Person)

Public ReadOnly Property Children As List(Of Person)
Get
Return _children
End Get
End Property

End Class

还有一个创建 Person 列表并提出 LINQ 查询的示例程序。

Module Program
Sub Main()
Dim persons As IEnumerable(Of Person) = GetPersonGraph()
Dim jonathansChildren As IEnumerable(Of Person)
jonathansChildren = persons.Where(Function(p) _
Not p.Parent Is Nothing _
AndAlso p.Parent.Name = "Jonathan Murphy")

For Each child As Person In jonathansChildren
Console.WriteLine(child)
Next
End Sub


Function GetPersonGraph() As IEnumerable(Of Person)
Dim result As New List(Of Person)
Dim parent As Person
Dim child As Person

parent = New Person()
parent.Name = "Jonathan Murphy"
result.Add(parent)

child = New Person()
child.Name = "Carl Murry"
child.Parent = parent
parent.Children.Add(child)
result.Add(child)

Return result
End Function
End Module

关于vb.net - VB.NET 中的 OOP - 子级、父级、父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3639461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com