我有自己的班级Question
。我有代码必须能够随意从这个类创建新对象,如下所示:
Question qst1 = new Question(parameters)
但我不知道我应该创造多少个。那么,如何为新问题生成唯一名称并生成具有该名称的问题?
这是我尝试过的,在temp
中构建一个带有问题编号的字符串,并尝试使用{{1}声明名为Question0
,Question1
等的变量}:
Question temp
但那不编译。有没有办法将string temp = "Question" + currentNumber.ToString();
currentNumber++;
Question temp = new Question("parameter1","parameter2");
中的字符串用作变量?
答案 0 :(得分:5)
如果你不知道会有多少元素,你可以使用List<T>
:
var questions = new List<Question>();
var question = new Question(parameters);
questions.Add(question);
question = new Question(parameters2);
questions.Add(question);
然后,您可以通过直接访问或循环遍历列表中的问题来访问列表中的问题:
var questionTouse = questions[0];
// or
foreach (var q in questions)
{
// do something with q
}
另一种方法是,如果您希望能够通过 分配的字符串键查找问题,则可以使用Dictionary<string, Question>()
:
var questions = new Dictionary<string, Question>();
var question = new Question(parameters);
questions["Question1"] = question;
question = new Question(parameters2);
questions["Question2"] = question;
然后要从字典中获取项目,您可以通过添加它们的键来引用它们,或者再次循环它们:
var questionTouse = questions["Question1"];
// or
foreach (var q in questions)
{
// do something with q
}
答案 1 :(得分:0)
使用数组
var questions = new Question[numquestion];
for (int i = 0 to numquestion)
{
questions[i] = new Question(...);
}
现在你可以参考问题[n]