将值赋给静态集访问器
本文关键字:访问 静态 | 更新日期: 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; }
}