C#中属性Getter返回NULL问题求助
解决Getter访问属性返回NULL的问题
我来帮你揪出这个问题的根源——你遇到的Getter返回NULL的情况,核心是自动实现的属性和你手动定义的字段完全是两个独立的实体,根本没有关联!
先看你写的HTProvince类代码:
public string provinceCode; public string ProvinceCode { get; set; }
这里的provinceCode是你手动声明的公共字段,而ProvinceCode是C#的自动实现属性——编译器会为这个自动属性偷偷生成一个私有字段(比如_ProvinceCode),这个生成的字段和你自己写的provinceCode半毛钱关系都没有。
所以如果你的HTGetProvinces()方法里,只是给provinceCode字段赋值,那ProvinceCode属性的Getter自然拿不到任何值,只能返回NULL。
两种解决办法:
方法一:丢弃手动字段,直接用自动属性
删掉多余的provinceCode字段,确保在HTGetProvinces()里给自动属性赋值:public class HTProvince { public string ProvinceCode { get; set; } public static List<HTProvince> HTGetProvinces() { // 示例赋值逻辑,务必给ProvinceCode属性赋值 var provinces = new List<HTProvince>(); // 假设这里是从数据库/接口获取数据的逻辑 provinces.Add(new HTProvince { ProvinceCode = "110000" }); provinces.Add(new HTProvince { ProvinceCode = "120000" }); return provinces; } }方法二:手动关联字段和属性
如果一定要保留provinceCode字段,就把属性改成手动实现,让它的Getter/Setter直接操作你定义的字段:public class HTProvince { public string provinceCode; public string ProvinceCode { get { return provinceCode; } set { provinceCode = value; } } // 此时在HTGetProvinces里给provinceCode字段赋值,属性就能正确返回值了 }
最后再确认下HTGetProvinces()里的赋值逻辑:不管用哪种方案,都要保证赋值的目标是属性本身,或者是和属性关联的字段,别再给独立的字段赋值啦!
内容的提问来源于stack exchange,提问作者user6785796
相关产品推荐
相关产品推荐

