我创建了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; //此行生成错误。
答案 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; }
}