如何为VB.NET中的List中的结构元素赋值?

Cha*_*son 19 vb.net data-structures

我在列表中有一个用户定义的结构,我试图在结构列表中的单个元素中更改值.访问元素不是问题.但是,当我尝试更新该值时,编译器会抱怨:

"表达是一种价值,因此不能成为作业的目标"

例如:

Public Structure Person

    Dim first as String
    Dim last as String
    Dim age as Integer

End Structure
Run Code Online (Sandbox Code Playgroud)

_

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
Run Code Online (Sandbox Code Playgroud)

Chr*_*way 15

正如其他注释所说,当您引用记录(0)时,您将获得结构的副本,因为它是值类型.你可以做什么(如果你不能把它改成一个类)是这样的:

Dim p As Person = records(0)
p.first = "Papa"
records(0) = p
Run Code Online (Sandbox Code Playgroud)

虽然,我认为使用Class更容易.