使用getter访问属性时,我得到一个NULL。我把它改为公开,以测试其他一切是否正常工作,没有别的错误。
HTProvince Class
public string provinceCode;
public string ProvinceCode
{
get; set;
}
表格
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);
}
}
答案 0 :(得分:1)
这是正确的行为,您没有为此属性或设置值返回任何值,因此它为null。
public string ProvinceCode
{
get; set;
}
如果你想返回provinceCode
private string provinceCode;
public string ProvinceCode
{
get
{
return provinceCode;
}
set
{
provinceCode = value;
}
}
答案 1 :(得分:1)
这是一种不好的做法。你必须将你的字段'provinceCode'设为私有
class Program
{
static void Main(string[] args)
{
CompB();
}
public static void CompB()
{
int[] AiB = new int[6];
for (int i = 1; i < 3; i++)
{
Random rnd = new Random();
int AiR = rnd.Next(0, 26);
AiB[i] = AiR;
}
Console.WriteLine(AiB[0]);
Console.ReadKey();
}
}
您的财产必须是公开的 哪个只能访问。
private string provinceCode;
答案 2 :(得分:0)
如果你想设置一个默认值,如果没有设置省码,你可以使用延迟加载:
private string _provinceCode;
public string ProvinceCode
{
get
{
if(string.IsNullOrEmpty(_provinceCode)) {
_provinceCode = "CODE";
}
return _provinceCode;
}
set
{
_provinceCode = value;
}
}
答案 3 :(得分:0)
这是C#3.0及更高版本中引入的自动属性
将属性更改为:
private string provinceCode { get; set; }
而不是单独的方法:
public string ProvinceCode
{
get; set;
}