vb6 - Использование структуры в качестве типа свойства класса - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь завершить проект и нахожу проблемы, когда дело касается типов свойств класса.

Могу ли я объявить свойство класса как Coord?

Public Property Coord() As Coord
    Get
        Return coordinate
    End Get
    Set(ByVal Value As Coord)
        coordinate.x = Value.x
        coordinate.y = Value.y
    End Set
End Property

Public Structure Coord
    Public x As Integer
    Public y As Integer
End Structure

Я получаюэта ошибка при компиляции:

Произошло необработанное исключение типа «System.MissingMemberException» в Microsoft.VisualBasic.dll Разрешение перегрузки не удалось, поскольку ни один доступный «Coord» не принимает это количество аргументов.

Устанавливается с помощью:

Current.Coord(NewCoord)

Где NewCoord имеет тип Coord

1 Ответ

0 голосов
/ 02 июня 2018

Некоторые из ваших проблем могут возникнуть из-за использования слова «Coord» для имени вашего класса и имени вашей структуры.Я подозреваю, что вам нужно включить Option Strict, Option Explicit и Option Infer в параметрах компиляции свойств вашего проекта.

Как сказал @Mary в комментариях выше, если ваш класс Coord предназначен только дляхраните координаты x, y, вы бы лучше смотрели на структуру Point.Однако, если вам нужны какие-то другие функции в вашем классе Coord, я все равно решил бы отказаться от структуры Coord и использовать структуру точек.Подумайте об этом

Private Class CoordClass
    Private coordinate As New Point
    Public Property Coord() As Point
        Get
            Return coordinate
        End Get
        Set(value As Point)
            coordinate = value
        End Set
    End Property
End Class

, и тогда вы сможете использовать его вот так

Dim aCoordinate As New Point
aCoordinate.x = 3
aCoordinate.y = 8

coordInstance.Coord = aCoordinate

или

coordInstance.Coord = New Point(4, 5)

Гораздо проще, чем альтернатива переименования вашей Coord стойкичтобы он не путался с вашим Coord классом и с необходимостью присваивать значения, используя что-то вроде

Dim aCoordinate As New Coord.structCoord
aCoordinate.x = 3
aCoordinate.y = 8

или

coordInstance.Coord = new coord.structCoord with {.x=4 , .y=5}

И самое главное

Структура точек встроена в .net и ее легче обслуживать через 6 месяцев или другими программистами.

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