创建没有无限实例化的实例

时间:2013-09-17 00:38:56

标签: c# winforms constructor

行: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构造函数,以便它不会无限地实例化?

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

如果你真的想要将MapDesignerView的实例传递给它自己,你可以通过使用具有以下合同的构造函数来实现:

public MapDesignerView(MapDesignerView map)

答案 2 :(得分:1)

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

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

相反,你想要的是

map = new Map(this);

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