集合基类中的IList列表?

时间:2012-05-24 07:13:34

标签: c# c#-4.0 collections interface collectionbase

问题是关于实现奇怪属性的集合基类:

protected IList List { get; }

1)什么是集合基类中的Ilist List? ...

2)它甚至没有初始化......如何才能访问...

3)何时使用此列表?

3 个答案:

答案 0 :(得分:3)

实际上,在CollectionBase类中,代码如下:

protected IList List
{
    get
    {
        return this;
    }
}

因此,它可以编译而没有错误。

当派生类或CollectionBase本身调用List属性时,它将返回列表实例(this)。如果您正在设计CollectionBase的子类,则可以在任何您希望将类型实例作为IList的地方使用此属性。

答案 1 :(得分:1)

1)IList是一个接口,任何类IList的实现都可以通过类的List属性返回。换句话说,您只知道它可以执行IList的接口规范。

2)你不能,你必须先初始化你的课,然后才能从课堂上获得属性List。 IList初始化为实现IList接口的类。

3)这取决于班级的规格。我猜它会将当前列表中的项目作为IList返回。

答案 2 :(得分:0)

此代码甚至不会编译。自动实现的属性必须同时具有get和set访问器。

如果它在一个抽象基类中并用abstract关键字标记,它将被编译:

protected abstract IList List { get; }

然后由派生类来实现此属性的getter。