繁体   English   中英

C#列表集合在方法之外失去其价值

[英]C# list collection loses its value outside of method

我是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关键字似乎已经解决了该问题。 谢谢皮杰!

原因可能有很多:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM