Структуры в коллекциях - PullRequest
       13

Структуры в коллекциях

0 голосов
/ 28 октября 2011

Я хотел бы хранить ссылки на группу структур в коллекции.Общие леса выглядят так:

Structure myStructType
  Dim prop1 as String
  Dim prop2 as int
End Structure


Dim myList as new List(Of myStructType)()

'Wrongness below
Dim myStruct as new myStructType()
myStruct.prop1 = "struct1"
myStruct.prop2 = 1
myList.Add(myStruct)

myStruct = new myStructType()
mystruct.prop1 = "number two"
mystruct.prop2 = 2
myList.Add(myStruct)

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

Есть ли способ исправить это, кроме как сделать структуры в классы?Это на самом деле правильный способ использовать структуры, или я все неправильно?

1 Ответ

1 голос
/ 28 октября 2011

Этот код делает то же самое, будь то структура или класс, потому что вы вызываете new myStructType() для каждого объекта.При этом следует помнить, что последующее извлечение и модификация этих объектов myStructType ведут себя по-разному.Если это извлечено из структуры, то вы копируете данные в извлечение, оставляя оригинал нетронутым в списке.Если он получен из класса, вы получаете ссылку на этот объект, а изменения, сделанные с использованием этой ссылки, изменяют экземпляр в списке.

Мне все еще интересно, чего вы пытаетесь достичь (или избежать), используяструктуры вместо классов?

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