我遇到了一些问题,不知道该如何解决。我有两个名为 DatabaseManagment 和 Logger 的类,它们相互引用。但是,由于无休止的递归,我得到了一个 stackoverflow 错误。由于我在 DatabaseManagement 中创建了一个 Logger 实例,并在 Logger 类中创建了一个 DatabaseMangement 实例,因此程序会在每个类之间无休止地运行,直到失败。我在下面放了代码示例。这两个类的功能相互依赖。如果没有递归,每个类如何相互引用?
数据库管理器
class DatabaseManagement
{
Logger l = new Logger();
public MySqlConnection myconn { get; private set; }
public void OpenDatabases()
{
记录器
class Logger
{
DatabaseManagement dm = new DatabaseManagement();
public void createLogEntry(char logType, string message)
{
最佳答案
我认为这应该可以解决问题。 整洁:没有静力学。
您需要做的唯一真正的“技巧”是将 this
(当前对象的实例,在本例中为 DatabaseManagement 的实例)传递给 Logger
的构造函数.
class DatabaseManagement
{
private Logger _logger;
public DatabaseManagement()
{
_logger = new Logger(this);
}
}
class Logger
{
DatabaseManagement _dm;
public Logger(DatabaseManagement dm)
{
_dm = dm;
}
}
关于c# - Stackoverflow - 具有构造函数和初始值设定项的两个类之间的无限递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27944122/