gpt4 book ai didi

c# - Getter C# 上的 StackOverflowException

转载 作者:太空狗 更新时间:2023-10-29 23:57:59 25 4
gpt4 key购买 nike

我在抽象类中的属性的 get; 上收到 StackOverflowException。

public abstract class SenseHatSnake
{

private readonly ManualResetEventSlim _waitEvent = new ManualResetEventSlim(false);

protected SenseHatSnake(ISenseHat senseHat)
{
SenseHat = senseHat;
}

protected static ISenseHat SenseHat { get; set; } // This Line

public virtual void Run()
{
throw new NotImplementedException();
}

protected void Sleep(TimeSpan duration)
{
_waitEvent.Wait(duration);
}

}

我在这里设置并获取它:

public class SnakeGame : SenseHatSnake
{
private readonly int _gameSpeed = 1000;
private static Timer _updatePositionTimer;
private bool _gameOver = false;

public readonly Movement Movement = new Movement(SenseHat);
public readonly Food Food = new Food(SenseHat);
public readonly Body Body = new Body(SenseHat);
public readonly Display Display = new Display(SenseHat);
public readonly Draw Draw = new Draw(SenseHat);

public SnakeGame(ISenseHat senseHat)
: base(senseHat)
{
}
//More code
}

其中一个类如下所示:

public class Movement : SnakeGame
{

public Movement(ISenseHat senseHat)
: base(senseHat)
{
}
//More code
}

据我所知,StackOverflowException 意味着我在某个地方有一个无限循环或无限递归,但老实说,我不知道在哪里,也不知道如何解决它。

最佳答案

SnakeGame 中的这一行导致递归

public readonly Movement Movement = new Movement(SenseHat);

由于Movement继承自SnakeGame,其构造函数会初始化SnakeGame,再次调用上面的代码初始化自己的Movement 字段。这导致递归。

关于c# - Getter C# 上的 StackOverflowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com