如何在C#中为内部模型类的成员赋值列表数据
解决方法
首先修正模型定义的问题,再调整访问逻辑:
1. 修复User类的Headlist定义
原代码里的Headlist是字段而非属性,且未初始化,这会导致访问时可能出现空引用或访问受限。改成带初始化的自动属性:
public class User { public string? UserName { get; set; } public string? Password { get; set; } // 改为自动属性并初始化空列表,避免空引用 public List<UserDetails> Headlist { get; set; } = new List<UserDetails>(); } public class UserDetails { public string? FirstName { get; set; } public string? LastName { get; set; } public string? Address { get; set; } public string? MobileNo { get; set; } }
2. 正确插入和访问数据
Headlist是集合类型,不能直接通过user.Headlist.FirstName这种方式访问,必须先定位到列表里的具体元素:
插入表格数据
var user = new User(); // 从表格提取数据,创建UserDetails实例并添加到列表 var tableRowDetail = new UserDetails { FirstName = "表格中的名字", LastName = "表格中的姓氏", Address = "表格中的地址", MobileNo = "表格中的手机号" }; user.Headlist.Add(tableRowDetail);
访问列表元素的列
- 取列表中第一个元素的属性:
var targetFirstName = user.Headlist[0].FirstName;
- 遍历所有元素并访问属性:
foreach (var detail in user.Headlist) { Console.WriteLine(detail.FirstName); Console.WriteLine(detail.Address); }
常见问题总结
- 原
Headlist是字段,部分场景(比如序列化、数据绑定)下会无法正常访问,改成属性是规范做法 - 未初始化列表会导致空引用异常,初始化后才能安全添加元素
- 集合不能直接访问单个对象的属性,必须先获取集合内的具体元素
内容的提问来源于stack exchange,提问作者Akash
相关产品推荐
相关产品推荐

