将值赋给静态集访问器

本文关键字:访问 静态 | 更新日期: 2023-09-27 18:01:53

我已经创建了c# winform程序。我需要访问所有表格的一个病人ID。我创建了一个静态类和一个静态属性。但是当我给this(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();
    }
}

但是它会产生一个错误。有人知道吗?病人。PatientID = pid;//这一行生成错误

将值赋给静态集访问器

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

使用自动实现的属性:

public static int PatientID { get; set; }

或添加一个支持字段:

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