나는 두 번 이상 질문을 받았음에 틀림 없다는 것을 알고 있지만, 해당 문제에 대한 답을 찾을 수는 없습니다.컬렉션을 배열로 변환하는 가장 최적화 된/효과적인 방법은 무엇입니까?
.NET 2.0에서 배열을 검색하고자하는 컬렉션이 있습니다. 즉, 컬렉션을 배열로 변환하려고합니다. 지금까지 나는 다음과 같습니다
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...
가 .NET 2.0을에서 할 수있는보다 효과적인 방법이 있나요 : 나는 그것을 호출있을 때 다음
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
그리고, 나는 단지에 있습니다 ? (T의) 내 CustomSet에서
편집 # 1
백작의 구현 및 사용하는 CopyTo는 :
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
그게, 나는 VB.NET에서 어떻게 해야할지 몰랐다. 이 제안에 감사드립니다! Count와 CopyTo의 구현에 관해서는 제 EDIT # 1에서 제공 할 코드를 참조하십시오. 감사! =) –
@Will : 충분히 효율적으로 보입니다. 'Keys' 컬렉션을 사용하는 대신 직접 사전에있는 항목을 반복한다면 약간 향상시킬 수는 있지만, 복잡성을 추가 할 가치는 거의 없습니다. – Guffa
귀하의 의견과 개선의 흔적을 남겨 주셔서 감사합니다. 나는이 힌트를 주셔서 감사합니다. =) –