我有一个奇怪的问题,我认为很可能是由于我的愚蠢行为,但对于我的生活,我(和我的团队的其他成员)看不到它。
我有一个包含通用列表属性的对象,我想对其进行排序。我已经写了一个比较器类来为我做这个,我用以下方式调用它:
baseObject.ListOfThings.Sort(new ThingComparer())
我已经调试到我的比较函数,它返回了正确的值。
然而,在排序调用之后,列表保持不变。我是否遗漏了一些明显的东西,或者我还需要做些什么。
非常感谢
编辑:是的我是个傻瓜,返回列表的属性每次访问时都会从头开始重新创建它。感谢大家的帮助,在将来寻求帮助之前,我会尝试更好地检查一下
答案 0 :(得分:1)
每次访问时,您的基础对象是否重新创建列表?每当有人请我帮忙解决这个问题时,事实证明这就是问题所在。也许该属性正在调用数据库,在访问时构建列表等等......
答案 1 :(得分:0)
看起来对我很好。 ListOfThings属性是否可能返回基础列表的副本?
然后,您将对列表的副本进行排序,然后丢失,并在下次调用ListOfThings时以原始顺序为您提供新的列表副本。
答案 2 :(得分:0)
我不知道剩下的代码,但尝试这样的事情呢?
baseObject.ListOfThings.Sort(AddressOf ThingComparer)
(假设你有共享功能来调用)
答案 3 :(得分:0)
要了解这里发生了什么,我们需要更多关于如何实现ListOfThings的上下文。特别是我们需要知道
它似乎是一种属性,并且有很多方法可以通过这种方式实现这种行为。例如,以下定义会导致您看到的确切行为
Public ReadOnly Property ListOfThings As List(Of Thing)
Get
Return New List(Of Thing)(someInternalList)
End Get
End Property