【问题标题】:Will an instance of this struct be allocated on the stack? [duplicate]是否会在堆栈上分配此结构的实例? [复制]
【发布时间】: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!");
        }
    }

}

既然结构体只包含值类型,那是否意味着它在被其他类实例化时会自动分配到堆栈中?

【问题讨论】:

标签: c#


【解决方案1】:

这不会在堆栈上分配。类的所有成员都是堆分配的,无论它们是否是值类型。

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 2014-08-12
    • 2019-10-25
    • 2011-03-06
    • 2012-07-29
    • 2013-04-22
    • 2013-10-20
    相关资源
    最近更新 更多