3

行: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 构造函数,使其不会无休止地实例化?

4

3 回答 3

6

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

于 2013-09-17T00:41:55.930 回答
2

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

public MapDesignerView(MapDesignerView map)
于 2013-09-17T00:43:19.197 回答
1
mdv = new MapDesignerView();
map = new Map(mdv);

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

相反,你想要的是

map = new Map(this);

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

于 2013-09-17T00:43:08.437 回答