Страница: 1 |
|
Вопрос: как сортировать массив As myClass?
|
Добавлено: 13.12.09 02:30
|
|
Автор вопроса: DimDoc
|
Можно ли использовать array.sort() для сортировки массива типа Класс? Хотелось бы отсортировать по одному полю типа string.
Например:
создан класс:
Public Class Class1
Private _name As String
Private _x As String
Public Property name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
' и так далее
End Class
[CODE]
Объявлен массив:
[CODE]Dim myArray() as Class1
наполняем массив:
Redim myArray(1)
myArray(0) as New Class1
myArray(0).name = "Яна"
myArray(0).tel = "999-99-99"
myArray(1) as New Class1
myArray(1).name = "Анна"
myArray(1).tel = "111-11-11"
теперь хотелось бы отсортировать...
примерно, так
array.sort(myArray)
но происходит ошибка.
наверно, потому что не указал - по какому полю сортировать.
Подскажите - как сортировать такие массивы?
Ответить
|
Номер ответа: 2 Автор ответа:
DimDoc
![](images/starBlue.gif)
Вопросов: 21 Ответов: 104
|
Профиль | | #2
|
Добавлено: 13.12.09 03:29
|
Я с этим ещё не знаком...
Это отсортированный запрос???
Спасибо!
Ответить
|
Номер ответа: 3 Автор ответа:
DimDoc
![](images/starBlue.gif)
Вопросов: 21 Ответов: 104
|
Профиль | | #3
|
Добавлено: 14.12.09 11:59
|
Попробовал!
Супер!!! Сортировка работает так - как надо!
И не надо создавать новый (сортированный) массив... Всё происходит внутри исходного массива...
Интересно, что при желании создать и заполнить новый отсортированный массив с помощью linq,
не требуется объявлять экземпляры класса с конструктором New.
Может я чего и не понял, но пока ошибок программы нет.
Даже с Option strict = on никаких проблем!
Спасибо!
Ответить
|
Номер ответа: 5 Автор ответа:
DimDoc
![](images/starBlue.gif)
Вопросов: 21 Ответов: 104
|
Профиль | | #5
|
Добавлено: 15.12.09 00:07
|
Извините... Я новичек... Ничего не понял...
Предыдущий пример для меня оказался понятным (хотя я linq не учил),
а Ваш пример для меня - тёмный лес (если конечно подробнее не объясните...)
Ответить
|
Номер ответа: 6 Автор ответа:
Artyom
![](images/starGold.gif) ![](images/starGold.gif) ![](images/starGold.gif) ![](images/starGold.gif) ![](images/starGold.gif) ![](images/starGold.gif) ![](images/starGold.gif)
Разработчик
Вопросов: 130 Ответов: 6602
|
Профиль | | #6
|
Добавлено: 16.12.09 04:46
|
Есть функция, которая сравнивает 2 объекта.
Если она считает что объект А больше объекта Б, она возвращает положительное число
Если считает что объект А меньше объекта Б, возвращает отрицательное число.
Если считает что оба объекта равны, то возвращает 0.
Я объявляю свою функцию сравнения 2-х объектов, которая просто сравнивает 2 свойства через String.Compare (работает точно так же).
Далее, есть метод Array.Sort, который выполняет сортировку массива, при этом для сравнения объектов в массиве принимает функцию сравнения. вызов выглядит следующим образом:
- Public Function CompareObjects (a As MyClass, b as MyClass) As Integer
- Return String.Compare(a.x, b.x)
- End Function
-
-
- Array.Sort(myArray, AddressOf CompareObjects)
Это полная запись.
Благодаря возможность делать анонимные функции в VB 2008, можно сократить запись до
- Array.Sort(myArray, Function(a, b) String.Compare(a.x, b.x))
Здесь я не объявляю функцию отдельно, а прямо на месте создаю.
Ответить
|
Страница: 1 |
Поиск по форуму