列表+结构:对象引用未设置为对象的实例

Lrd*_*ude 2 c# struct list

我收到以下错误与此代码:

struct Msg
{
    public int remove;
    public string text;
}

public class Messages
{
    #region Class Variables
    protected SpriteBatch sb;
    List<Msg> msgList;
    #endregion

    public Messages(SpriteBatch spriteBatch)
    {
        sb = spriteBatch;
        List<Msg> msgList = new List<Msg>();
    }

    public int Now()
    {
        return DateTime.Now.Second;
    }

    public void Add(string text, int keep = 5)
    {
        Msg temp = new Msg();
        temp.remove = Now() + keep;
        temp.text = text;
        msgList.Add(temp);
    }

    public void Draw()
    {
        int count = 0;
        foreach (Msg msg in msgList)
        {
            if (msg.remove >= Now())
            {
                msgList.Remove(msg);
            }
            else
            {
                count++;
                sb.DrawString(Game1.SmallFont1, msg.text, new Vector2(10, 5 + count * 25), Color.White);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

以及确切的执行时间

        msgList.Add(temp);
Run Code Online (Sandbox Code Playgroud)

它给了我:

    NullReferenceException was unhandled
    Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)

Gab*_*gut 5

该字段msgList未初始化。在构造函数中,您声明并初始化了类型为的新局部变量List<Msg>

public Messages(SpriteBatch spriteBatch)
{
    sb = spriteBatch;
    msgList = new List<Msg>(); // correct way
}
Run Code Online (Sandbox Code Playgroud)