【问题标题】:C# Adding to list issueC# 添加到列表问题
【发布时间】:2011-06-05 12:17:42
【问题描述】:

大家好,我有一个应用程序,它由一个基类(MacroCommand)、三个 MacroCommand 子类(调整大小、旋转、颜色)和另一个不继承任何东西的类(图像)和另一个类(宏)组成。包含一个宏命令列表

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

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

【问题讨论】:

  • 您想与他人分享实际错误吗?
  • 我认为您需要发布完整的代码才能获得适当的帮助。
  • colourObjectrotateFlipObjectresizeObject的类型有哪些?
  • 您只能在 Macro 类中执行 macroCommandList.Add,因为您访问的是私有成员。

标签: c# class list


【解决方案1】:

这应该可行:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      如果您有List&lt;BaseClass&gt;,您只能向其中添加可转换为BaseClass 的元素(即BaseClass'es 和派生自BaseClass 的类)。

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

      【讨论】:

        猜你喜欢
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-31
        • 2020-01-03
        • 2014-05-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多