我在列表中有一個用戶定義的結構,我試圖改變結構列表中單個元素的值。訪問元素不是問題。然而,當我嘗試更新的值,編譯器會抱怨:如何爲VB.NET中的列表中的結構元素賦值?
「表達式是一個值,因此不能成爲 賦值的目標」
例如:
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
每個.NET程序員都犯這個錯誤一次。結構是一個值類型,記錄(0)返回*副本*。更新副本的「第一個」成員不會完成任何操作。人需要成爲一個班級。 –
從C++獲得遺留假設;)。謝謝你的提示。 –
@Hans:是的,很容易忘記即使'records(0)'也會返回struct的一個副本...... – IAbstract