[英]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.