list.sort无法在vb.net中运行

时间:2009-04-03 15:21:10

标签: vb.net sorting

我有一个奇怪的问题,我认为很可能是由于我的愚蠢行为,但对于我的生活,我(和我的团队的其他成员)看不到它。

我有一个包含通用列表属性的对象,我想对其进行排序。我已经写了一个比较器类来为我做这个,我用以下方式调用它:

baseObject.ListOfThings.Sort(new ThingComparer())

我已经调试到我的比较函数,它返回了正确的值。

然而,在排序调用之后,列表保持不变。我是否遗漏了一些明显的东西,或者我还需要做些什么。

非常感谢

编辑:是的我是个傻瓜,返回列表的属性每次访问时都会从头开始重新创建它。感谢大家的帮助,在将来寻求帮助之前,我会尝试更好地检查一下

4 个答案:

答案 0 :(得分:1)

每次访问时,您的基础对象是否重新创建列表?每当有人请我帮忙解决这个问题时,事实证明这就是问题所在。也许该属性正在调用数据库,在访问时构建列表等等......

答案 1 :(得分:0)

看起来对我很好。 ListOfThings属性是否可能返回基础列表的副本

然后,您将对列表的副本进行排序,然后丢失,并在下次调用ListOfThings时以原始顺序为您提供新的列表副本。

答案 2 :(得分:0)

我不知道剩下的代码,但尝试这样的事情呢?

baseObject.ListOfThings.Sort(AddressOf ThingComparer) 

(假设你有共享功能来调用)

答案 3 :(得分:0)

要了解这里发生了什么,我们需要更多关于如何实现ListOfThings的上下文。特别是我们需要知道

  • 是财产吗?如果是这样,请告诉我们获取方法
  • ListOfThings的类型是什么

它似乎是一种属性,并且有很多方法可以通过这种方式实现这种行为。例如,以下定义会导致您看到的确切行为

Public ReadOnly Property ListOfThings As List(Of Thing) 
  Get
    Return New List(Of Thing)(someInternalList)
  End Get
End Property