Ho una struttura definita dall'utente in un elenco che sto cercando di modificare il valore di in un singolo elemento all'interno dell'elenco di strutture. L'accesso all'elemento non è un problema. Tuttavia, quando provo ad aggiornare il valore, il compilatore segnala:Come si assegnano i valori agli elementi della struttura in un elenco in VB.NET?
"espressione è un valore e quindi non può essere bersaglio di assegnazione "
Ad esempio:
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
Ogni programmatore .NET commette questo errore una volta. Una struttura è un tipo di valore, i record (0) restituiscono una * copia *. L'aggiornamento del "primo" membro della copia non porta a nulla. La persona deve essere una classe. –
Presupposti di carry-over da C++;). Grazie per il consiglio. –
@Hans: sì, è facile dimenticare che anche 'records (0)' restituirà una copia della struct ... – IAbstract