创建实例而无需无休止的实例化

本文关键字:无休止 实例化 实例 创建 | 更新日期: 2023-09-27 18:31:44

行:mdv = new MapDesignerView();创建一个无尽的实例化(无限循环)。请参阅下面的代码:

public partial class MapDesignerView : Form
{
    public  MapDesignerView mdv;
    public  Map map;
    public  MapController mapController;
    public MapConstructor mapConstructor;
    MouseEventHandler detectMouse;
    public MapDesignerView()
    {
        mdv = new MapDesignerView();
        map = new Map(mdv);
        mapController = new MapController(map);
        mapConstructor = new MapConstructor(mapController);
        detectMouse = new MouseEventHandler(mapController);
        InitializeComponent();
    }
}

如您所见,我需要在 mapDesignView 类中创建 MapDesignerView 类的实例,以传递给另一个类构造函数。如何以不同的方式将此表单传递给 Map 构造函数,以便它不会无休止地实例化?

创建实例而无需无休止的实例化

听起来您正在寻找this,它指的是当前实例。

如果你真的想将MapDesignerView的实例传递给它自己,你可以通过使用带有协定的构造函数来实现,如下所示:

public MapDesignerView(MapDesignerView map)
mdv = new MapDesignerView();
map = new Map(mdv);

这将创建一个新对象(最终导致堆栈溢出)

相反,你想要的是

map = new Map(this);

通过扩展,您不再需要mdv变量。