gpt4 book ai didi

vb.net - 创建一个共享的 IEqualityComparer

转载 作者:行者123 更新时间:2023-12-04 06:00:40 26 4
gpt4 key购买 nike

我正在做一些需要自定义比较器的 LINQ,所以我创建了一个实现 IEqualityComparer 的新类.但是,当我使用它时,我每次都必须创建它的一个实例。

Dim oldListOnly = oldList.Except(newList, New MyEqualityComparer)
Dim newListOnly = newList.Except(oldList, New MyEqualityComparer)

我可能误解了 .NET 的工作原理,但每次都创建一个新的比较器似乎很浪费。我真的只想要一个实例(相当于 C++/C# 中的静态)。

所以我尝试创建一个“静态”类,它 in vb.net is a module .但是得到了一个 'Implements' not valid in Modules错误。

然后我尝试在我的类上创建 Equals 和 GetHashCode 函数共享方法,但得到这个错误: Methods that implement interface members cannot be declared 'Shared'.
任何想法如何在这里实现我的目标?还是我只是误解了幕后发生的事情?

最佳答案

您的理解是正确的,尽管浪费不太可能引起注意。对于您的情况,您可以使用单例模式,它通常是这样的:

Public Class MyEqualityComparer
Implements IEqualityComparer(Of whatever)

Private Sub New()
'no outsider creation
End Sub

Private Shared ReadOnly _instance As New MyEqualityComparer()
Public Shared ReadOnly Property Instance As MyEqualityComparer
Get
Return _instance
End Get
End Property

'other code

End Class

关于vb.net - 创建一个共享的 IEqualityComparer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8945375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com