1
    Function keepOnlyDuplicates(ByRef list1 As List(Of Integer), ByRef list2 As List(Of Integer)) As List(Of Integer)
    Dim returnList As New List(Of Integer)
    For Each i As Integer In list1
        For Each j As Integer In list2
            If i = j Then
                returnList.Add(i)
                Exit For
            End If
        Next
    Next
    Return returnList
End Function

我创建了这个函数来从其他两个整数中创建一个新列表,该列表仅包含两者中的整数(各个列表没有重复项)。

有没有办法修改这个函数,让它接受任何类型的列表并返回一个相应类型的列表而不会有太多麻烦?如果它真的很复杂,我可以轻松地为其他类型创建另一个函数。但是,如果只是调用什么类型的问题,那么我该怎么做呢?

谢谢。

4

1 回答 1

3
Function keepOnlyDuplicates(Of t As IComparable)(ByRef list1 As List(Of t), ByRef list2 As List(Of t)) As List(Of t)
            Dim returnList As New List(Of t)
            For Each i As t In list1
                For Each j As t In list2

                    If i.CompareTo(j) = 0 Then
                        returnList.Add(i)
                        Exit For
                    End If
                Next
            Next
            Return returnList
        End Function

如果 t 将是您自己的类型,那么:

//为了使完全可比添加你自己的类型Implements IComparable

或者这样做。如果你只检查相等 变化函数

 Function keepOnlyDuplicates(Of t)(ByRef list1 As List(Of t), ByRef list2 As List(Of t)) As List(Of t)

在这种情况下,您自己的类型只需覆盖 equal() 。将条件更改为

If i.Equals(True) = True Then .
于 2013-06-22T06:22:43.353 回答