Je sais qu'il a dû être demandé plus de deux fois, mais je n'ai trouvé aucune question applicable pour répondre à la question.Le moyen le plus optimisé/efficace de convertir une collection en tableau?
J'ai une collection que je veux récupérer un tableau de .NET 2.0. En d'autres termes, je veux convertir une collection en tableau. Jusqu'à présent, je donne les résultats suivants:
Public Class Set(Of T)
Implements IEnumerable(Of T)
Implements ICollection(Of T)
Implements IEqualityComparer(Of T)
Private _set as Dictionary(Of T, Object)
// Implementing the interfaces here...
Public Function ToArray() As Array
Dim arr As Array = Array.CreateInstance(GetType(T), Me.Count)
Me.CopyTo(arr, 0)
Return arr
End Function
End Class
Et puis, quand je l'appeler, je dois simplement:
Dim propertiesToLoad As CustomSet(Of String) = New CustomSet(Of String)()
// Initializing my CustomSet here...
Dim searcher As DirectorySearcher = New DirectorySearcher()
Dim entry As DirectoryEntry = New DirectoryEntry("LDAP://" & Environment.UserDomain)
searcher.SearchRoot = entry
searcher.SearchScope = SearchScope.Subtree
searcher.Filter = someFilter
searcher.PropertiesToLoad.AddRange(propertiesToLoad.ToArray())
// Launching search here...
est-il un moyen plus efficace de le faire dans .NET 2.0 ?
EDIT # 1
Implémentations du comte et CopyTo dans mon CustomSet (Of T):
Public ReadOnly Property Count As Integer Implements ICollection(Of T).Count
Get
Return _set.Keys.Count
End Get
End Property
Public Sub CopyTo(ByVal array As T, ByVal arrayIndex As Integer) Implements ICollection(Of T).CopyTo
_set.Keys.CopyTo(array, arrayIndex)
End Sub
Cela, je ne savais pas comment faire dans VB.NET. Merci pour cette suggestion! En ce qui concerne les implémentations de Count et CopyTo, veuillez voir le code que je vais fournir dans mon EDIT # 1. Merci! =) –
@Will: Cela semble assez efficace. Il pourrait être possible de l'améliorer légèrement si vous parcourez directement les éléments du dictionnaire au lieu d'utiliser la collection 'Keys', mais cela ne vaut guère la peine. – Guffa
Merci pour votre commentaire et des traces d'amélioration, même si celles-ci ne valent pas le coup en raison de la complexité. J'apprécie ces conseils. =) –