List (Of String)을 서브 클래 싱하여 VB.NET에서 StringList 클래스를 구현하려고합니다. 대부분의 List 메서드는 StringList 클래스에서 변경되지 않지만 메서드에 iterator.ToList()가 포함되는 경우 결과는 클래스로 다시 캐스팅 될 수없는 일반 목록입니다. .Distinct
는 반복자를 반환하고 .ToList
가 StringList
에 캐스트 할 수없는 List(Of String)
을 반환하기 때문에.Distinct 및 .ToList를 사용하여 .NET List 객체를 서브 클래 싱하기
Module Module1
Sub Main()
Dim a0 As New List(Of String) From {"Apple", "Banana", "Cherry", "Banana"}
Dim b0 As New StringList From {"Asparagus", "Broccoli", "Cucumber", "Broccoli"}
Dim a1 As List(Of String) = a0.Distinct.ToList ' list of 3 strings
Dim b1 As StringList = b0.Distinct.ToList ' runtime exception invalid cast from List(Of String) to StringList
End Sub
End Module
Class StringList
Inherits List(Of String)
Public Overrides Function ToString() As String
Return Strings.Join(Me.ToArray, ", ")
End Function
End Class
b1
할당이 실패합니다
일반 목록 대신 StringList
을 사용할 수 있도록 Distinct()
또는 ToList()
을 구현하는 올바른 방법은 무엇입니까?
만약'StringList'가 당신이 보여주는 것처럼 간단하다면, 나는 그것이 정말로 존재할 필요가 있는지에 대해 심각하게 질문 할 것입니다. 'ToString'이 다르게 행동하는 것이 정말 중요합니까? String.Join()을 호출하는 List (Of String)의 확장 메소드는 다른 이름으로 프로젝트에 쉽게 추가 될 수 있습니다. –