问题是关于实现奇怪属性的集合基类:
protected IList List { get; }
1) 集合基类中的 Ilist List 是什么?...
2)它甚至没有初始化......那么它怎么能被访问......
3) 什么时候使用这个列表?
问题是关于实现奇怪属性的集合基类:
protected IList List { get; }
1) 集合基类中的 Ilist List 是什么?...
2)它甚至没有初始化......那么它怎么能被访问......
3) 什么时候使用这个列表?
实际上,在CollectionBase
类中,代码如下:
protected IList List
{
get
{
return this;
}
}
因此,它可以毫无错误地编译。
当派生类或CollectionBase
自身调用List
属性时,它会返回list( this
)的实例。如果您正在设计 的子类CollectionBase
,则可以在任何想要获取类型实例的地方使用此属性IList
。
1) IList 是一个接口,任何作为 IList 实现的类都可以由类的 List 属性返回。也就是说,你只知道它可以做IList的接口规范。
2)你不能,你必须先初始化你的类,然后才能从类中获取属性列表。IList 被初始化为实现 IList 接口的类。
3)这取决于类的规范。我猜它会将当前列表中的项目作为 IList 返回。
这段代码甚至不会编译。自动实现的属性必须同时具有 get 和 set 访问器。
如果它在抽象基类中并用 abstract 关键字标记,它将编译:
protected abstract IList List { get; }
然后由派生类来实现这个属性的getter。