VB.Net, EventArgs, ByRef и ByVal

В VB.Net у меня есть объект с именем WorkflowButtonEventArgs что наследует от System.EventArgs,

WorkflowButtonEventArgs класс содержит два ByRef Свойства. Это объекты в памяти, и я не хочу, чтобы они дублировались или копировались.

Могу ли я передать WorkflowButtonEventArgs объект ByVal в VB.Net и до сих пор сохранить два ByRef определения в WorkflowButtonEventArgs?

В частности, если я передам это ByVal:

Dim e As New WorkflowButtonEventArgs(...) ' e has some ByRef properties

RaiseEvent SomeEventName(e) ' e is passed ByVal

Будет ли ByRef Недвижимость / Участники в e (WorkflowButtonEventArgs класс) не копировать или дублировать в память?

Короче говоря: могу я пройти eByValили мне нужно пройти ByRef так как он содержит ByRef Свойства?

3 ответа

Могу ли я передать e "ByVal", или мне нужно передать его "ByRef", так как он содержит свойства "ByRef"?

Да. Объекты, на которые указывает ссылка, не будут скопированы, даже если ваш EventArgs Передано ByVal.

Ссылочные объекты не будут дублироваться в памяти. ByRef Ключевое слово только для параметра означает, что вы можете изменить значение переменной, лежащей в основе аргумента в вызывающем коде.

Еще один способ достичь вашей цели - создать синглтон, в котором будут храниться два свойства.

Другие вопросы по тегам