Tengo una estructura definida por el usuario en una lista que estoy tratando de cambiar el valor de un elemento individual dentro de la lista de estructuras. El acceso al elemento no es un problema. Sin embargo, cuando trato de actualizar el valor, el compilador se queja:¿Cómo se asignan valores a elementos de estructura en una lista en VB.NET?
"expresión es un valor y por lo tanto no puede ser el objetivo de la cesión"
Por ejemplo:
Public Structure Person
Dim first as String
Dim last as String
Dim age as Integer
End Structure
_
Public Sub ListTest()
Dim newPerson as Person
Dim records as List (Of Person)
records = new List (Of Person)
person.first = "Yogi"
person.last = "bear"
person.age = 35
records.Add(person)
records(0).first = "Papa" ' <<== Causes the error
End Sub
Cada programador de .NET comete este error una vez. Una estructura es un tipo de valor, registros (0) devuelve una * copia *. La actualización del "primer" miembro de la copia no logra nada. La persona debe ser una clase. –
Supuestos de arrastre de Darn de C++;). Gracias por el consejo. –
@Hans: sí, es fácil olvidar que incluso 'records (0)' devolverá una copia de la estructura ... – IAbstract