问题是关于实现奇怪属性的集合基类:
protected IList List { get; }
1)什么是集合基类中的Ilist List? ...
2)它甚至没有初始化......如何才能访问...
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。