1

所以我想在我的一个项目中使用几个 ArrayList,然后我去 msdn 网页寻找合成器。然而应用后,错误列表抛出了18个错误,其中16个是关于“WindowsFormsApplication7.clsAL”没有实现接口成员“System.ICloneable.Clone()”左右,其中2个是关于“类型或命名空间”找不到名称“ComVisibleAttribute”或“ComVisibleAttributeAttribute”(您是否缺少 using 指令或程序集引用?)”。这是我的代码:

using System;
using System.Collections;
using System.Collections.Generic;

namespace WindowsFormsApplication7
{
    [SerializableAttribute]

    class clsAL : IList, ICollection, IEnumerable, ICloneable
    {


   public ArrayList dir = new ArrayList();
      public ArrayList time = new ArrayList();
    }



    }
//    

我错过了什么吗?

4

2 回答 2

3

您可能看过ArrayList Class

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class ArrayList : IList, ICollection, 
      IEnumerable, ICloneable

因此,显然您在代码中做了两件事:

  1. 使用的变量dirtime类型ArrayList(你只需要这个)
  2. 尝试重新实现ArrayList(绝对不同的任务,您不需要使用它ArrayList),将所有这些接口添加到类声明中。

要使用ArrayList,您不需要您的类来实现接口(和/或使用属性),由Arrayist. 因此,只需将它们从您的类声明中删除:

//all attributes removed
class clsAL //all interfaces removed
{
    public ArrayList dir = new ArrayList();
    public ArrayList time = new ArrayList();

}

如果你的类必须实现某个接口,它应该包含实际的实现(显式或隐式)。请阅读接口(C# 编程指南)

interface IFoo
{
    void FooMethod();
}

class Foo : IFoo
{
    public Foo() { }

    public void FooMethod()
    {
        //actual IFoo implementation by Foo
    }
}
于 2012-11-23T00:46:42.707 回答
0

是的,我会说你错过了一些东西!

您正在实现一堆接口,但实际上并没有覆盖(甚至指定)这些接口所期望的任何东西。有点违背了实现接口的整个目的......

于 2012-11-23T00:46:42.173 回答