list.sort не работает в vb.net - PullRequest
2 голосов
/ 03 апреля 2009

У меня есть немного странная проблема, которая, я думаю, наиболее вероятна из-за глупости с моей стороны, но я, как и другие члены моей команды, не могу ее увидеть.

У меня есть объект, который содержит общее свойство списка, которое я хотел бы отсортировать. Я написал класс для сравнения, чтобы сделать это для меня, и я называю это следующим образом:

baseObject.ListOfThings.Sort(new ThingComparer())

Я отладил свою функцию сравнения, и она возвращает правильные значения.

Однако после вызова сортировки список остается без изменений. Я что-то упустил очевидное или мне нужно что-то еще сделать?

Большое спасибо

РЕДАКТИРОВАТЬ: Да, я был дураком, и свойство, возвращающее список, воссоздали его с нуля каждый раз, когда к нему обращались. Всем спасибо за помощь, и я постараюсь научиться проверять вещи лучше, прежде чем обращаться за помощью в будущем

Ответы [ 4 ]

1 голос
/ 03 апреля 2009

Ваш базовый объект воссоздает список каждый раз, когда к нему обращаются? Каждый раз, когда кто-то просил меня помочь с этой проблемой, это оказывалось проблемой. Возможно, свойство вызывает базу данных, строит список при обращении к нему и т. Д. *

0 голосов
/ 03 апреля 2009

Чтобы понять, что здесь происходит, нам нужно больше контекста в том, как реализован ListOfThings. В частности нам нужно знать

  • Является ли это собственностью. Если да, пожалуйста, покажите нам метод получения
  • Какой тип ListOfThings

Похоже, это свойство, и существует множество способов, которыми это может быть реализовано таким образом, что это может вызвать такое поведение. Например, следующее определение приведет к точному поведению, которое вы видите

Public ReadOnly Property ListOfThings As List(Of Thing) 
  Get
    Return New List(Of Thing)(someInternalList)
  End Get
End Property
0 голосов
/ 03 апреля 2009

Я не знаю остальной код, но как насчет того, чтобы попробовать что-то вроде этого:

baseObject.ListOfThings.Sort(AddressOf ThingComparer) 

(при условии, что у вас есть общая функция для вызова)

0 голосов
/ 03 апреля 2009

выглядит прекрасно для меня. Возможно, свойство ListOfThings возвращает копию нижележащего списка?

Затем вы сортируете копию списка, которая затем теряется, и при следующем вызове ListOfThings вам предоставляется новая копия списка в исходном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...