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;
    }