我正在制作一个'测验类型'程序,其中的问题从文件中读取,存储为对象,然后存储在列表中。 我不知道如何检查它们是否已正确存储,所以我也会发布存储代码。
我的问题是我似乎无法访问我存储的任何数据。 例如:
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>();
}
答案 0 :(得分:4)
你的问题在这里:
public static List<object> Questions = new List<object>();
你想要这个:
public static List<QuizQuestions> Questions = new List<QuizQuestions>();
从列表中检索项目时,它们为object
。 object
没有MultipleChoice
属性..但是QuizQuestions
。这就是你要将列表定义为。
答案 1 :(得分:0)
您的错误就在这里,每次更改当前实例并将其添加到您的列表中。所以您的列表可能有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
属性。