C#添加到列表问题

时间:2011-06-05 12:17:42

标签: c# class list

嘿伙计们,我有一个应用程序,它包含一个基类(MacroCommand),三个子类MacroCommand(Resize,Rotate,Color),另一个类不继承任何东西(Image),然后是另一个类(Macro)拥有一个MacroCommands列表

class Macro
{
    List<MacroCommand> macroCommandList = new List<MacroCommand>();
}

基本上,当我在Form类中创建我的MacroCommand对象时,我需要将它们添加到MacroCommand列表中,但是,当我尝试执行此操作时,我不断收到错误:

macroCommandList.Add(colourObject);
macroCommandList.Add(rotateFlipObject);
macroCommandList.Add(resizeObject);

(这是在Form类中)

感谢所有人的帮助。

编辑:错误:

错误2当前上下文中不存在名称'colourObject'C:\ Users \ Ari \ Desktop \ Assignment 3 \ Assignment 3 \ Assignment 3 \ Form1.cs 134 42 Assignment 3 错误3当前上下文中不存在名称“macroCommandList”C:\ Users \ Ari \ Desktop \ Assignment 3 \ Assignment 3 \ Assignment 3 \ Form1.cs 135 21 Assignment 3

只是这些错误,但每个不同的行

3 个答案:

答案 0 :(得分:1)

这应该有效:

class Macro {
    private List<MacroCommand> macroCommandList = new List<MacroCommand>();

    public void AddMacroCommand(MacroCommand mc)
    {
        macroCommandList.Add(mc);
    }
}

答案 1 :(得分:0)

根据错误,您尝试添加的对象不存在。这些对象在哪里宣布?它们的范围是什么?默认情况下,该列表是私有的,因此您需要将这些对象作为参数提供给将其添加到列表中的方法。

答案 2 :(得分:0)

如果您有List<BaseClass>,则只能添加可转换为BaseClass的元素(即BaseClass'和来自BaseClass的类)。

如果要将元素添加到列表(例如,macroCommandList),则需要确保列表可以访问调用代码。这意味着要么将其公开(不是一个好主意),要么将公共方法添加到其包含类(即Macro)进行添加。 该方法是公共的,因此它可以被类外的调用者访问,并且还可以访问私有变量macroCommandList