Getter返回NULL c#

Getter返回NULL c#,c#,getter-setter,C#,Getter Setter,当使用getter访问属性时,我得到一个空值。我把它改成了public,以测试其他一切是否正常,是的,没有其他问题 省级 形式 public Form1() { //htgetprovides()返回省的列表 初始化组件(); 列表省列表= HTProvince.htgetprovings(); foreach(省列表中的HTX省) { //有效。将每个项目的省代码属性添加到我的列表中 provincesListBox.Items.Add(x.provinceCode); //抛出空异常。不工作

当使用getter访问属性时,我得到一个空值。我把它改成了public,以测试其他一切是否正常,是的,没有其他问题

省级

形式

public Form1()
{
//htgetprovides()返回省的列表
初始化组件();
列表省列表=
HTProvince.htgetprovings();
foreach(省列表中的HTX省)
{
//有效。将每个项目的省代码属性添加到我的列表中
provincesListBox.Items.Add(x.provinceCode);
//抛出空异常。不工作
provincesListBox.Items.Add(x.ProvinceCode);
}
}

这是正确的行为,您没有为此属性返回任何值或设置值,因此它为空

     public string ProvinceCode
    {
       get; set;
    }
如果要返回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 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); 

    }
}
公共字符串ProvinceCode
{
得到
{
返回provinceCode;
}
设置
{
provinceCode=值;
}     
}
公共表格1()
{
//htgetprovides()返回省的列表
初始化组件();
列表省列表=
HTProvince.htgetprovings();
foreach(省列表中的HTX省)
{
//有效。将每个项目的省代码属性添加到我的列表中
provincesListBox.Items.Add(x.ProvinceCode);
}
}

这是C#3.0及更高版本中引入的自动属性

将属性更改为:

private string provinceCode { get; set; }
代替单独的方法:

public string ProvinceCode
    {
        get; set;
    } 

它为null,因为您从未为该属性设置值。的可能重复
private string provinceCode { get; set; }
public string ProvinceCode
    {
        get; set;
    }