【发布时间】:2021-04-01 12:05:15
【问题描述】:
这是我的结构
public struct Timer
{
private readonly float _duration;
public float Time { get; private set; }
public Timer(float duration)
{
_duration = duration;
Time = duration;
}
public void Tick(float deltaTime)
{
if (Time == 0)
return;
Time -= deltaTime;
if (Time < 0)
Time = 0;
}
public void Reset()
{
Time = _duration;
}
}
这样的类可以使用它
public class Level : MonoBehavior
{
private Timer _timer = new Timer(10f);
private void Update()
{
_timer.Tick();
if (_timer.Time == 0)
{
print("Time's up!");
}
}
}
既然结构体只包含值类型,那是否意味着它在被其他类实例化时会自动分配到堆栈中?
【问题讨论】:
-
不,类对象存储在GC堆中。
-
是的,我想这个方法可能会导致问题。看看docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
-
在这种情况下,它将与 Level 类的其余部分一起在堆上结束。例如,如果它是方法中的局部变量,它将在堆栈中
标签: c#