为静态集访问器赋值?

时间:2016-08-11 15:33:11

标签: c#

我创建了c#winform程序。我需要为所有表格访问1个患者ID。我创建了一个静态类和一个静态属性。但是当我为这个(set)属性赋值时,我得到了一个堆栈溢出异常。我写这样的代码:

static class Patient
{
    public static int PatientID
    {
        get 
        {
            return PatientID;
        }
         set 
        { 
             PatientID = value; 
        }
    }
}

致电计划:

private void button1_Click(object sender, EventArgs e)
{
    if (cmbPatient.SelectedItem != null)
    {
        int pid = Convert.ToInt32(cmbPatient.SelectedValue.ToString());

        Patient.PatientID = pid;
        frmDailyCare fdC = new frmDailyCare();
        fdC.Show();
        this.Close();
    }
}

但它产生了一个错误。谁有任何想法? Patient.PatientID = pid; //此行生成错误。

1 个答案:

答案 0 :(得分:4)

问题出在您的PatientID二传手:PatientID = value。您在setter中递归调用相同的属性(顺便说一下,也是getter),因此它会进入一个永无止境的递归调用路径。

使用自动实现的属性:

public static int PatientID { get; set; }

或添加支持字段:

private static int _patientID;

public static int PatientID 
{ 
    get { return _patientID; } 
    set { _patientID = value; }
}