DirectCasted объекты в структурах клонируются? - PullRequest
0 голосов
/ 17 декабря 2011

Я использую структуру, которая может содержать переменную данных как объект:

Structure parse_object
    Friend data As Object
End Structure

в этой переменной данных. Я хочу сохранить различные типы структур, например, такую:

Structure drive_data
    Friend num_steps As UInteger
End Structure

Я инициализирую это так:

Dim driveConf_comm as parse_object
Private Sub init()
    driveConf_comm = new parse_object()
    structure drive_data
    Dim d As New drive_data()
    d.num_steps = 0
    driveConf_comm.data = d
End Sub

Теперь я хочу изменить значение 'num_steps' в обратном вызове

Private Sub cb(ByRef num_steps as UInteger)
    Dim d As drive_data = DirectCast(driveConf_comm.data, drive_data)
    d.num_steps = 100000
End Sub

Но это не меняет переменную, напишите d обратно в driveConf_comm.data:

    DirectCast(driveConf_comm.data, drive_data).num_steps => 0
    driveConf_comm.data = d
    DirectCast(driveConf_comm.data, drive_data).num_steps => 100000

Клонировал ли DirectCast мою структуру?

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 17 декабря 2011

Да, но DirectCast не виноват.Именно так работают типы значений (или структуры).

Каждый раз, когда вы присваиваете тип значения другой переменной, полю или свойству, вы делаете копию значений в структуре.Как вы заметили, это означает, что изменения в копии не влияют на оригинал.

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