У меня есть список (Of AddlInfo) с AddlInfo, являющимся объектом.
Я пытаюсь передать addlInfoList по ссылке в функцию другого класса:
Public Shared Sub SortAddlInfo(ByRef addlInfoList As List(Of AddlInfo))
addlInfoList.Sort(AddressOf Comparer)
End Sub
Private Function Comparer(ByVal x As AddlInfo, ByVal y As AddlInfo) As Integer
Dim result As Integer = x.AddlInfoType.CompareTo(y.AddlInfoType)
Return result
End Function
Это работает, если я не передаю ссылку в другой класс, но когда я пытаюсь это сделать, я получаю следующую ошибку:
Не удалось разрешить перегрузку, потому что никакая доступная сортировка не может быть вызвана с этими аргументами:
'Public Sub Sort(comparison As System.Comparison(Of AddlInfo))': Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.
'Public Sub Sort(comparer As System.Collections.Generic.IComparer(Of AddlInfo))': 'AddressOf' expression cannot be converted to 'System.Collections.Generic.IComparer(Of MyProject.AddlInfo)' because 'System.Collections.Generic.IComparer(Of MyProject.AddlInfo)' is not a delegate type.
Я мог бы поместить методы обратно в вызывающий класс, но я хотел бы иметь возможность вызывать эти методы из разных классов в моем приложении.
Я мог бы также создать новый список в методах, но почему? Кажется глупым.
Как-нибудь обойти это? (Или мне нужно объяснить больше?)
Заранее спасибо!