Как назначить тип структуры в момент объявления? - PullRequest
0 голосов
/ 22 апреля 2020

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

Structure SHAPE
    Dim x as integer
    Dim y as integer
End Structure

Dim Shape1 As SHAPE = (15, 20) ' << The Problem is here

Public Sub test()
    Label1.Text = Shape1.x
End Sub

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

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

Public Structure Shape

    Public ReadOnly Property X As Integer
    Public ReadOnly Property Y As Integer

    Public Sub New(x As Integer, y As Integer)
        Me.X = x
        Me.Y = y
    End Sub

End Structure

Затем вы создадите экземпляр этого типа, как если бы вы другое:

Dim shape1 As New Shape(15, 20)
0 голосов
/ 22 апреля 2020

Либо создайте конструктор и вызовите конструктор. Или заполните свойства после построения.

Например.

Dim Shape1 As SHAPE = New SHAPE With {.x = 1, .y = 2}

Эквивалентно:

Dim Shape1 As SHAPE = New SHAPE()
Shape1.X = 1
Shape1.y = 2

Создание конструктора является предпочтительным способом, потому что структуры в общем случае должны быть неизменными. Выполнение этого и установка свойств только для чтения - это простой способ сделать структуру неизменной:

Public Structure Shape

    Public ReadOnly Property X As Integer
    Public ReadOnly Property Y As Integer

    Public Sub New(x As Integer, y As Integer)
        Me.X = x
        Me.Y = y
    End Sub

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