質問は、奇妙なプロパティを実装するコレクション基本クラスに関するものです。
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) できません。クラスから List プロパティを取得する前に、クラスを初期化する必要があります。IList は、IList インターフェイスを実装するクラスとして初期化されます。
3) それはクラスの仕様に依存します。現在のリストの項目を IList として返すと思います。
このコードはコンパイルさえしません。自動的に実装されるプロパティには、get アクセサーと set アクセサーの両方が必要です。
抽象基本クラス内にあり、abstract キーワードでマークされている場合、コンパイルされます。
protected abstract IList List { get; }
次に、このプロパティのゲッターを実装するのは派生クラス次第です。