我正在尝试用VB做一些事情,我想我不知道如何做到这一点.对不起,我对OOP并不擅长.
我有很多我正在创建的东西,它们有两个值 - 父名和子名(是的,实际的人!).
所以它会是这样的:
Public Class Child
Public Property ParentName As String
Public Property ChildName As String
End Class
Run Code Online (Sandbox Code Playgroud)
然后:
Public Class Parent
Public Property ParentName As String
Public Property ChildName() As String
End Class
Run Code Online (Sandbox Code Playgroud)
然后我需要将这些添加到Parents父级可以有一个或多个子级的类中.
我首先添加一个Child.如果该子项的父名称已存在,则只需将Child的名称添加到该父项,但如果该项不存在,则创建一个新的父项(使用该子项).然后将所有父母添加到父母的集合(与他们的1个或更多孩子).
结果列表看起来像这样:
父母:
(注意最后一个 - 父/子姓不需要匹配 - 在这种情况下,孩子取父亲的姓,而不是母亲,但我们不列出父亲).
我如何创建这些类型的类,以便我可以将子项添加到父项,将父项添加到父项,然后确保它与Linq一样可以使用?
Thx提前.
既然他们都是人,也许应该有一个Person班级.每个人可以a Mother,a Father和集合Children.通过这种方式,您可以创建几代图形和各种星座.
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
Run Code Online (Sandbox Code Playgroud)
更新
这里是一个更全面(并且有些重新设计)的例子,它可能有助于揭示一些亮点:
的Person类,轻微改变(替换Mother/ Father与Parent,取得Children属性`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
Run Code Online (Sandbox Code Playgroud)
还有一个示例程序创建一个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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3536 次 |
| 最近记录: |