C#列表集合失去了方法之外的价值

时间:2018-08-21 19:42:28

标签: c# asp.net

我是C#和ASP.NET框架的新手,似乎无法找到关于为什么在一种方法中添加到列表集合的值消失或无法在另一种方法中访问的答案。如果在创建列表后立即打印列表的内容,则会返回值,但是调试器会说在创建列表并以其他方法访问之后,列表中没有任何内容。

这是作为列表数据类型的类:

class Letter
{
    public char Character { get; set; }
    public bool Guessed { get; set; }
}

这是要声明的列表(最后的打印确实可行):

private List<Letter> currentWord = new List<Letter>();

这是创建列表的方法:

protected void CreateCurrentWordList()
    {
        char[] letterArray = computerChoice.ToCharArray();
        for (int i = 0; i < letterArray.Length; i++)
        {
            currentWord.Add(new Letter { Character = letterArray[i], Guessed = false });
        }
        string displayString = PrintCurrentWord();
        TestLabel.Text = displayString;
    }

这是另一个方法中的代码块,该代码块无法访问插入列表中的值,或者在调试器中列表显示为空:

foreach (Letter letter in currentWord)
            {
                if (letter.Character.ToString() == userGuess)
                {
                    letter.Guessed = true;
                    displayString += letter.Character.ToString();
                }                   
            }

感谢您对其他回答此问题的帮助或指导。

编辑:向列表集合声明中添加static关键字似乎已解决了该问题。谢谢PiJei!

1 个答案:

答案 0 :(得分:0)

原因可能很多:

  1. 您实例化了两个或多个对象,其中一个实例中没有任何值。
  2. 您正在使用无法访问 值添加到列表中之前。
  3. 您回发丢失列表中数据的页面。

我会尝试将 currentWord 存储在 ViewState [“ myList”] 中,以查看在某些请求后它是否具有值。