Getter返回NULL c#

时间:2018-04-13 05:25:13

标签: c# getter-setter

使用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);
        }
    }

4 个答案:

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