为什么我的名单不起作用?

时间:2015-01-09 01:51:33

标签: c#

以下是我到目前为止创建的代码:

namespace Q_and_A
{
    public class question
    {        
        public string Question;
        public string Op1;
        public string Op2;
        public string Op3;
        public string Answer;

        public question(string questionString, string op1, string op2, string op3, string answer)
        {
            Question = questionString;
            Op1 = op1;
            Op2 = op2;
            Op3 = op3;
            Answer = answer;
        }
    }

    public class Questions
    {
        List<question> QuestionList = new List<question>();

        question Q1 = new question("Q", "?", "??", "???", "??");

        QuestionList.AddLast(Q1);

    }

    public partial class Form1 : Form
    {

    }
}

“QuestionList.AddLast(Q1);”生成的错误命令行如下:

  1. 错误1无效的标记'('在类,结构或接口成员声明中C:\ TeenCoder \ MyProject \ Q和A Game \ Q和A Game \ Form1.cs 36 29 Q和A Game
  2. 错误2类,结构或接口成员声明中的令牌')'无效C:\ TeenCoder \ MyProject \ Q和A Game \ Q和A Game \ Form1.cs 36 32 Q和A Game
  3. 错误3'Q_and_A_Game.Questions.QuestionList'是'字段',但用作'类型'C:\ TeenCoder \ MyProject \ Q和A Game \ Q和A Game \ Form1.cs 36 9 Q和A游戏
  4. 错误4'Q_and_A_Game.Questions.Q1'是'字段',但用作'类型'C:\ TeenCoder \ MyProject \ Q和A Game \ Q和A Game \ Form1.cs 36 30 Q和A游戏
  5. 详细说明:

    确定。我觉得相当愚蠢,但我无法弄清楚这一点!我正在学习我的第一语言,而且我在教自己(我在家里学习)。我正在练习到目前为止我所学到的(我正在使用TeenCoder“Windows编程”)关于LinkedLists和类。我正在制作的节目应该显示一个有3个答案的问题。我创建了“问题”类,没有任何错误或问题,然后我创建了一个LinkedList来保存程序要求的所有问题。再一次,没有错误。然后我创建了一个简单的测试问题以添加到列表中。这就是问题所在。它不会让我使用我的LinkedList。我意识到我可能犯了一些愚蠢的错误(就像我说的,我是计算机编程的新手),但我无法弄明白。 Thx :) ~Ethan(这是我的第一个问题)

    编辑:谢谢。我在发布这个问题的第二天就发现了我的问题。我应该在我的“公共部分类Form1:Form”中创建一个方法,它将创建我的问题列表(如果这有意义的话)。感谢所有的答案,帮助和建议。

3 个答案:

答案 0 :(得分:3)

您正在尝试执行函数中未包含的语句。你可能想要这个:

public class Questions
{
    private List<question> QuestionList = new List<question>();

    public Questions()
    {
        question Q1 = new question("Q", "?", "??", "???", "??"); // just a test question

        QuestionList.Add(Q1); // This generates 4 errors

    }

}

此外,没有AddLast。默认情况下,项目会自动添加到列表末尾。如果需要,可以使用Insert而不是Add,如果要在列表中的特定位置插入项目。

另外,就像一个FYI一样,我不确定你打算在哪里使用它,但你可以通过从List继承它来简化你的Questions类:

public class Questions : List<question>
{
}

这会创建一个强类型列表,因此您可以执行以下操作:

Questions questions = new Questions();
questions.Add(new Question("Q", "?", "??", "???", "??"));

答案 1 :(得分:0)

在我对这个问题过于刻板之前,请修正该行中的拼写错误(&#34; QuesITonList&#34;而不是&#34; QuesTIonList&#34;)并查看错误是否仍然存在。

编辑:更重要的是,它看起来像是语法错误。所以请耐心等待,因为我的C#并不是很好(虽然它在某些方面类似于Java):在大多数面向对象的语言中,当你定义一个类时,你实际上做的不仅仅是基本的在该定义中初始化(例如SomeIntegerValue = 4)。任何更复杂的东西,例如调用AddLast()方法,都必须在该类的方法中完成。

看起来您希望在初始化该对象期间完成AddLast(Q1)。在这种情况下,你应该使用&#34;构造函数&#34;方法。您的question课程具有该方法 - 它是您设置Question = question的方法。为Questions制作一个类似的方法,并将该行放在那里。

答案 2 :(得分:0)

public class Questions
{
    List<question> QuestionList = new List<question>();

    //Inside Class, cannot call methods, you probably want these 2 in a constructor
    public Questions()
    {
        question Q1 = new question("Q", "?", "??", "???", "??"); // just a test question

        QuestionList.Add(Q1); // This generates 4 errors
    }

}