Getter 返回 NULL c#
Getter returning NULL c#
当使用 getter 访问 属性 时,我得到一个 NULL。我已将其更改为 public 以测试其他一切是否正常,是的,没有其他问题。
HTProvince Class
public string provinceCode;
public string ProvinceCode
{
get; set;
}
Form
public Form1()
{
//HTGetProvinces() returns a list of provinces
InitializeComponent();
List<HTProvince> provinceList =
HTProvince.HTGetProvinces();
foreach (HTProvince x in provinceList)
{
//Works. Adds items the province code property of for each item to my list
provincesListBox.Items.Add(x.provinceCode);
//throws null exception. Doesn't work
provincesListBox.Items.Add(x.ProvinceCode);
}
}
这是正确的行为,您没有 return 此 属性 的任何值或设置值,因此它为空。
public string ProvinceCode
{
get; set;
}
如果你想return provinceCode
private string provinceCode;
public string ProvinceCode
{
get
{
return provinceCode;
}
set
{
provinceCode = value;
}
}
如果你想在没有设置 ProvinceCode 的情况下使用一些默认值,你可以使用延迟加载:
private string _provinceCode;
public string ProvinceCode
{
get
{
if(string.IsNullOrEmpty(_provinceCode)) {
_provinceCode = "CODE";
}
return _provinceCode;
}
set
{
_provinceCode = value;
}
}
这是一种不好的做法。您必须将您的字段 'provinceCode' 设为私有
private string provinceCode;
你的 属性 必须只有 public
只能访问。
public string ProvinceCode
{
get
{
return provinceCode;
}
set
{
provinceCode = value;
}
}
public Form1()
{
//HTGetProvinces() returns a list of provinces
InitializeComponent();
List<HTProvince> provinceList =
HTProvince.HTGetProvinces();
foreach (HTProvince x in provinceList)
{
//Works. Adds items the province code property of for each item to my list
provincesListBox.Items.Add(x.ProvinceCode);
}
}
这是 C# 3.0 及更高版本中引入的自动属性
将 属性 更改为:
private string provinceCode { get; set; }
而不是单独的方法:
public string ProvinceCode
{
get; set;
}
当使用 getter 访问 属性 时,我得到一个 NULL。我已将其更改为 public 以测试其他一切是否正常,是的,没有其他问题。
HTProvince Class
public string provinceCode;
public string ProvinceCode
{
get; set;
}
Form
public Form1()
{
//HTGetProvinces() returns a list of provinces
InitializeComponent();
List<HTProvince> provinceList =
HTProvince.HTGetProvinces();
foreach (HTProvince x in provinceList)
{
//Works. Adds items the province code property of for each item to my list
provincesListBox.Items.Add(x.provinceCode);
//throws null exception. Doesn't work
provincesListBox.Items.Add(x.ProvinceCode);
}
}
这是正确的行为,您没有 return 此 属性 的任何值或设置值,因此它为空。
public string ProvinceCode
{
get; set;
}
如果你想return provinceCode
private string provinceCode;
public string ProvinceCode
{
get
{
return provinceCode;
}
set
{
provinceCode = value;
}
}
如果你想在没有设置 ProvinceCode 的情况下使用一些默认值,你可以使用延迟加载:
private string _provinceCode;
public string ProvinceCode
{
get
{
if(string.IsNullOrEmpty(_provinceCode)) {
_provinceCode = "CODE";
}
return _provinceCode;
}
set
{
_provinceCode = value;
}
}
这是一种不好的做法。您必须将您的字段 'provinceCode' 设为私有
private string provinceCode;
你的 属性 必须只有 public 只能访问。
public string ProvinceCode
{
get
{
return provinceCode;
}
set
{
provinceCode = value;
}
}
public Form1()
{
//HTGetProvinces() returns a list of provinces
InitializeComponent();
List<HTProvince> provinceList =
HTProvince.HTGetProvinces();
foreach (HTProvince x in provinceList)
{
//Works. Adds items the province code property of for each item to my list
provincesListBox.Items.Add(x.ProvinceCode);
}
}
这是 C# 3.0 及更高版本中引入的自动属性
将 属性 更改为:
private string provinceCode { get; set; }
而不是单独的方法:
public string ProvinceCode
{
get; set;
}