创建实例而无需无休止的实例化
本文关键字:无休止 实例化 实例 创建 | 更新日期: 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
变量。