.NET Object初始化问题

时间:2011-04-04 13:07:28

标签: .net

我希望有一种方便的方法将Phone对象添加到Phone集合中。是否存在某种对象初始化程序语法,我可以使用它来避免以下自定义例程?

我正在使用.NET 3.5

 Private Function PhoneNumbersToCollection(ByVal ParamArray phoneNumberArray() As TelephoneNumberType) As TelephoneNumberCollection

        Dim PhoneCollection As New TelephoneNumberCollection

        For Each phoneNumber As TelephoneNumberType In phoneNumberArray
            If phoneNumber IsNot Nothing Then
                PhoneCollection.Add(phoneNumber)
            End If
        Next

        Return PhoneCollection

    End Function

编辑:

Public Class TelephoneNumberCollection 
   Inherits System.Collections.ObjectModel.Collection(Of TelephoneNumberType)

2 个答案:

答案 0 :(得分:1)

我通常继承List(Of T)并复制它的构造函数。第三个将做你想要的。如果要排除Nothing元素,可以重写构造函数。

Class TelephoneNumberCollection
    Inherits List(Of TelephoneNumberType)

    Public Sub New()
    End Sub

    Public Sub New(capacity As Integer)
        MyBase.New(capacity)
    End Sub

    Public Sub New(collection As IEnumerable(Of TelephoneNumberType))
        MyBase.New(collection)
    End Sub
End Class

您不是继承List,但在TelephoneNumberCollection类中重写这些构造函数只需要很少的工作量。

编辑:这是我犯的一个愚蠢的错误。 IList不是一个类,List是。

答案 1 :(得分:0)

如果TelephoneNumberCollection实施IList of TelephoneNumberType,您可以使用AddRange

PhoneCollection.AddRange(phoneNumberArray)