Porady: tworzenie kolekcji wykorzystywanej przez inicjator kolekcji (Visual Basic)
Podczas tworzenia kolekcji za pomocą inicjatora kolekcji kompilator języka Visual Basic wyszukuje metodę Add
typu kolekcji, dla której parametry metody Add
są zgodne z typami wartości w inicjatorze kolekcji. Ta Add
metoda służy do wypełniania kolekcji wartościami z inicjatora kolekcji.
Przykład
W poniższym przykładzie pokazano OrderCollection
kolekcję zawierającą publiczną Add
metodę, za pomocą którego inicjator kolekcji może dodawać obiekty typu Order
. Metoda Add
umożliwia użycie skróconej składni inicjatora kolekcji.
Public Class Customer
Public Property Id As Integer
Public Property Name As String
Public Property Orders As OrderCollection
Public Sub New(ByVal id As Integer, ByVal name As String, ByVal orders As OrderCollection)
Me.Id = id
Me.Name = name
Me.Orders = orders
End Sub
End Class
Public Class Order
Public Property Id As Integer
Public Property CustomerId As Integer
Public Property OrderDate As DateTime
Public Sub New(ByVal id As Integer,
ByVal customerId As Integer,
ByVal orderDate As DateTime)
Me.Id = id
Me.CustomerId = customerId
Me.OrderDate = orderDate
End Sub
End Class
Public Class OrderCollection
Implements IEnumerable(Of Order)
Dim items As New List(Of Order)
Public Property Item(ByVal index As Integer) As Order
Get
Return CType(Me(index), Order)
End Get
Set(ByVal value As Order)
items(index) = value
End Set
End Property
Public Sub Add(ByVal id As Integer, ByVal customerID As Integer, ByVal orderDate As DateTime)
items.Add(New Order(id, customerID, orderDate))
End Sub
Public Function GetEnumerator() As IEnumerator(Of Order) Implements IEnumerable(Of Order).GetEnumerator
Return items.GetEnumerator()
End Function
Public Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator
Return Me.GetEnumerator()
End Function
End Class
Imports System.Runtime.CompilerServices
Module Module1
<Extension()>
Sub Add(ByVal genericList As List(Of Customer),
ByVal id As Integer,
ByVal name As String,
ByVal orders As OrderCollection)
genericList.Add(New Customer(id, name, orders))
End Sub
End Module
Dim customerList = New List(Of Customer) From
{
{1, "John Rodman", New OrderCollection From {{9, 1, #6/12/2008#},
{8, 1, #6/11/2008#},
{5, 1, #5/1/2008#}}},
{2, "Ariane Berthier", New OrderCollection From {{2, 2, #1/18/2008#},
{4, 2, #3/8/2008#},
{6, 2, #3/18/2008#},
{7, 2, #5/14/2008#},
{5, 2, #4/4/2008#}}},
{3, "Brian Perry", New OrderCollection From {{1, 3, #1/15/2008#},
{3, 3, #3/8/2008#}}}
}
Zobacz też
Współpracuj z nami w serwisie GitHub
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.