https://barnamenevis.org/showpo...&postcount=120
کلاس مورد نظر باید اینترفیس IComparable رو پیاده سازی کند. (این اینترفیس تنها یک متود CompareTo دارد)
به نحوه ی پیاده سازی متود CompareTo دقت کنید :
کد:
Public Class Person
Implements IComparable
Private _firstname As String
Public Property Firstname() As String
Get
Return _firstname
End Get
Set(ByVal value As String)
_firstname = value
End Set
End Property
Private _lastname As String
Public Property Lastname() As String
Get
Return _lastname
End Get
Set(ByVal value As String)
_lastname = value
End Set
End Property
Private _age As Integer
Public Property Age() As Integer
Get
Return _age
End Get
Set(ByVal value As Integer)
_age = value
End Set
End Property
Public Sub New(ByVal firstname As String, ByVal lastname As String, ByVal age As Integer)
_firstname = firstname
_lastname = lastname
_age = age
End Sub
Public Function CompareTo(ByVal obj As Object) As Integer Implements IComparable.CompareTo
If obj.GetType Is GetType(Person) Then
Dim p2 As Person = obj
Return _firstname.CompareTo(p2.Firstname)
Else
Throw New ArgumentException("Object is not a Person.")
End If
End Function
Public Overrides Function ToString() As String
Return String.Format("{0} {1}, Age = {2}", _firstname, _lastname, _age.ToString())
End Function
End Class
مثال - Sort کردن افراد از روی اسم کوچک (استفاده از کلاس بالا) :
کد:
Dim persons As List(Of Person) = New List(Of Person)()
persons.Add(New Person("Behrouz", "Rad", 30))
persons.Add(New Person("Omid", "Mottaghi Rad", 31))
persons.Add(New Person("Mehdi", "Keramati", 32))
persons.Add(New Person("Ali", "Keshavarz", 33))
persons.Add(New Person("Mohammad", "Heshemian", 34))
persons.Add(New Person("Farhad", "XXX", 35))
'//Before Sorting
ListBox1.Items.AddRange(persons.ToArray())
'//ُSorting List
persons.Sort()
'//Sorted List
listBox2.Items.AddRange(persons.ToArray
())