我有一个类DBConnectionClass和一些关联的类。 我有一个InsertQueryMethod,如下所示
public string InsertQuery
{
get { return InsertQuery; }
set { InsertQuery = schools.SchoolsInsertQuery + branches.BranchInsertQuery + students.StudentsInsertQuery ; }
}
类中的关联查询是:
public string StudentsInsertQuery = " INSERT INTO AddStudents (FirstName, LastName, PhoneNo, EmailId) VALUES (@FirstName, @LastName, @PhoneNo, @EmailId) ";
public string StudentsUpdateQuery = " UPDATE AddStudents SET(FirstName=@FirstName, LastName=@LastName, PhoneNo=@PhoneNo, EmailId=@EmailId) ";
public string StudentsDeleteQuery = " DELETE FROM AddStudents ";
public string StudentsSelectQuery = " SELECT * FROM AddStudents WHERE Id=@ID ";
类似的案例是分支和学校类。 我收到了这个错误:
未处理的类型' System.StackOverflowException'发生在SchoolManagementSystemOOP.dll中。在DBConnectionClass中获取{return InsertQuery;}。我的项目中有这个错误。请让我了解正在发生的事情以及如何处理此异常。
答案 0 :(得分:1)
这是无限递归的,会导致堆栈溢出:
public int MyInt {
get { return MyInt; }
}
return MyInt;
再次调用get
的{{1}}访问者,MyInt
尝试return MyInt;
,调用get
访问者...直到堆栈已满
您尚未为变量指定任何实际存储空间。如果您在获取/设置中不需要任何特殊行为,C#为您提供了一个可爱的快捷方式:
public int MyInt {
get;
set;
}
C#将在幕后为该属性创建存储空间。如果您需要特殊行为,则必须声明自己的存储空间。例如:
private int m_my_int;
public int MyInt {
get {
// maybe do something
return m_my_int;
}
set {
// maybe do something
m_my_int = value;
}
}