繁体   English   中英

list.sort在vb.net中不起作用

[英]list.sort not working in vb.net

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

我有一个对象,其中包含我想排序的常规列表属性。 我已经编写了一个比较器类来为我执行此操作,并且我通过以下方式进行调用:

baseObject.ListOfThings.Sort(new ThingComparer())

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

但是,在排序调用之后,列表保持不变。 我是否错过了明显的事情,或者还有其他需要做的事情。

非常感谢

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

您的基础对象是否在每次访问列表时都会重新创建列表? 每当有人要求我帮助解决此问题时,事实就是这样。 也许属性正在调用数据库,在访问数据库时建立列表,等等。

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

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

我不知道其余的代码,但是尝试这样的事情呢:

baseObject.ListOfThings.Sort(AddressOf ThingComparer) 

(假设您要调用共享函数)

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

  • 是财产吗? 如果是这样,请向我们展示Get方法
  • ListOfThings是什么类型

它似乎是一个属性,可以通过多种方式来实现,从而导致此行为。 例如,以下定义将导致您看到的确切行为

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM