0

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

protected IList List { get; }

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

2)它甚至没有初始化......那么它怎么能被访问......

3) 什么时候使用这个列表?

4

3 回答 3

3

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

protected IList List
{
    get
    {
        return this;
    }
}

因此,它可以毫无错误地编译。

当派生类或CollectionBase自身调用List属性时,它会返回list( this)的实例。如果您正在设计 的子类CollectionBase,则可以在任何想要获取类型实例的地方使用此属性IList

于 2012-05-24T07:32:18.350 回答
1

1) IList 是一个接口,任何作为 IList 实现的类都可以由类的 List 属性返回。也就是说,你只知道它可以做IList的接口规范。

2)你不能,你必须先初始化你的类,然后才能从类中获取属性列表。IList 被初始化为实现 IList 接口的类。

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

于 2012-05-24T07:18:09.530 回答
0

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

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

protected abstract IList List { get; }

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

于 2012-05-24T07:17:09.747 回答