如何避免recursion和或无限循环monogame返回函数

这段代码在无限基础上返回如何解决?

public GuiElement MoveElement(int x, int y) { GUIRect = new Rectangle(GUIRect.X += x,GUIRect.Y += y,GUIRect.Width,GUIRect.Height); return MoveElement(x,y); } 

这是我在其他课上设置的值

  gm.Add(new GuiElement("BackGround")); gm.Add(new GuiElement("Play_Button").MoveElement(150, 50)); gm.Add(new GuiElement("HighScore_Button")); gm.Add(new GuiElement("Quit_Button")); 

基本上我希望能够使用MoveElement移动一些元素

它创造了一个无限循环

giftman.exe中发生未处理的types为“System.StackOverflowException”的exception

你不需要为此使用recursion(没有基本的情况下,你会得到一个无限循环,就像你一样)。

只要改变你的方法:

 public GuiElement MoveElement(int x, int y) { GUIRect = new Rectangle(GUIRect.X += x,GUIRect.Y += y,GUIRect.Width,GUIRect.Height); return this; } 

或者更好的是,添加一个构造函数来设置你的GuiElement的位置,所以你可以这样调用它:

 gm.Add(new GuiElement("Play_Button", 150, 50)); 

或者你可以改变你的MoveElement方法,不要返回任何东西:

 public void MoveElement(int x, int y) { GUIRect = new Rectangle(GUIRect.X += x,GUIRect.Y += y,GUIRect.Width,GUIRect.Height); } 

然后创建它时,你可以这样做:

 GuiElement playButton = new GuiElement("Play_Button"); playButton.MoveElement(150, 50); gm.Add(playButton);