Tôi có cấu trúc do người dùng xác định trong danh sách mà tôi đang cố gắng thay đổi giá trị cho thành phần riêng lẻ trong danh sách cấu trúc. Việc truy cập phần tử không phải là vấn đề. Tuy nhiên, khi tôi cố gắng cập nhật các giá trị, trình biên dịch phàn nàn:Làm thế nào để bạn gán giá trị cho các phần tử cấu trúc trong một Danh sách trong VB.NET?
"Expression là một giá trị và do đó không thể là mục tiêu của nhiệm vụ "
Ví dụ:
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
Mọi lập trình viên .NET đều mắc lỗi này một lần. Cấu trúc là một loại giá trị, các bản ghi (0) trả về một * bản sao *. Cập nhật thành viên "đầu tiên" của bản sao không thực hiện bất cứ điều gì. Người cần phải là một lớp. –
Darn giả định chuyển giao từ c + +;). Cảm ơn vì tiền hỗ trợ. –
@Hans: yeah, thật dễ dàng để quên rằng ngay cả 'bản ghi (0)' sẽ trả về bản sao của cấu trúc ... – IAbstract