2011-04-04 52 views
0

我想要一個方便的方法將Phone對象添加到Phone集合中。是否有某種對象初始化程序語法可用於避免以下自定義例程?.NET對象初始值設定程序問題

我使用.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) 
+0

'TelephoneNumberCollection'是如何定義的? – 2011-04-04 13:15:11

+0

公共類TelephoneNumberCollection 繼承System.Collections.ObjectModel.Collection(Of TelephoneNumberType) – ChadD 2011-04-04 13:25:21

回答

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是。

0

如果TelephoneNumberCollection實現IList of TelephoneNumberType,您可以使用AddRange

PhoneCollection.AddRange(phoneNumberArray) 
+0

這看起來更簡潔,我寫了,但我希望能夠傳遞個人電話號碼,而不必先構建數組。 Dim ContactPhoneCollection As TelephoneNumberCollection = PhoneNumbersToCollection(CCItem.HomePhone,CCItem.CellPhone,CCItem.WorkPhone)。 – ChadD 2011-04-04 13:11:22

+0

@Velika:呃,這就是'ParamArray'所做的。我不認爲我明白你在問什麼... – 2011-04-04 13:16:55

+0

不,它不:公共類TelephoneNumberCollection Inherits System.Collections.ObjectModel.Collection(Of TelephoneNumberType) – ChadD 2011-04-04 13:32:56