繁体   English   中英

访问列表内的对象

[英]Accessing Objects inside lists

我正在制作一个“测验类型”程序,其中从文件中读取问题,将其存储为对象,然后存储在列表中。 我不知道如何检查它们是否已正确存储,因此我也将发布存储代码。

我的问题是我似乎无法访问已存储的任何数据。 例如:

vartrack.Questions[0].MultipleChoice;

这应该返回true还是false? 但是由于某些原因,我无法访问MultipleChoice数据。

我的代码如下:类代码:

public class QuizQuestions
{
    public bool MultipleChoice = false;
    public string questiontext;
    public static List<string> Answers = new List<string>();
    public bool correct;
    public QuizQuestions(string QuestionText)
    {
        questiontext = QuestionText;
    }
    public void AddAnswer(string answer)
    {
        Answers.Add(answer);
        if (Answers.Count > 1)
        {
            MultipleChoice = true;
        }
    }
}

其余代码:

foreach(string currentline in vartrack.QuestionLines)
            {
                if (Question)
                {
                    current = new QuizQuestions(currentline);
                    vartrack.Questions.Add(current);
                    Question = false;
                }
                else
                {
                    if (currentline == "#")
                    {
                        Question = true;
                    }
                    else
                    {
                        if (current != null)
                        {
                           current.AddAnswer(currentline);
                        }
                    }
                }
            }
            int num;
            while (vartrack.Questions.Count > inputNoOfQs.Value)
            {
                Random random = new Random();
                num = random.Next(0, vartrack.Questions.Count);
                vartrack.Questions.RemoveAt(num);
            }
            vartrack.Questions[0].MultipleChoice;

谢谢

编辑1:Vartrack在这里定义:

    public static class vartrack
{
    public static string[] QuestionSets;
    public static List<string> QuestionLines = new List<string>();
    public static List<object> Questions = new List<object>();

}

您的问题在这里:

public static List<object> Questions = new List<object>();

你要这个:

public static List<QuizQuestions> Questions = new List<QuizQuestions>();

当您从列表中检索项目时,它们是object object没有MultipleChoice属性。.但是QuizQuestions有。 这就是您要定义列表的方式。

每当您更改当前实例并将其添加到列表中时,您的错误就在这里。因此您的列表可能有20个问题,但是如果您这样做,它们将是相同的问题:

current = new QuizQuestions(currentline);
vartrack.Questions.Add(current);

相反,您应该创建一个全新的实例,如下所示:

var question = new QuizQuestions(currentline);
vartrack.Questions.Add(question);
current = question;

我建议您将MultipleChoice为以下属性:

public bool MultipleChoice { get; set; }

并且您的列表定义是错误的。

更改此:

public static List<object> Questions = new List<object>();

对此:

public static List<QuizQuestions> Questions = new List<QuizQuestions>();

如果定义List<object> ,则将无法访问MultipleChoice属性,因为Object类没有MultipleChoice属性。

暂无
暂无

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

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