行: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();
}
}
正如您所看到的,我需要在MapDesignerView
类中创建mapDesignView
类的实例,以传递给另一个类构造函数。如何以不同的方式将此表单传递给Map构造函数,以便它不会无限地实例化?
答案 0 :(得分:6)
听起来你正在寻找this
,它指的是当前的实例。
答案 1 :(得分:2)
如果你真的想要将MapDesignerView
的实例传递给它自己,你可以通过使用具有以下合同的构造函数来实现:
public MapDesignerView(MapDesignerView map)
答案 2 :(得分:1)
mdv = new MapDesignerView();
map = new Map(mdv);
这会创建一个新对象(最终导致堆栈溢出)
相反,你想要的是
map = new Map(this);
通过扩展,您不再需要mdv
变量。