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) できません。クラスから List プロパティを取得する前に、クラスを初期化する必要があります。IList は、IList インターフェイスを実装するクラスとして初期化されます。

3) それはクラスの仕様に依存します。現在のリストの項目を IList として返すと思います。

于 2012-05-24T07:18:09.530 に答える
0

このコードはコンパイルさえしません。自動的に実装されるプロパティには、get アクセサーと set アクセサーの両方が必要です。

抽象基本クラス内にあり、abstract キーワードでマークされている場合、コンパイルされます。

protected abstract IList List { get; }

次に、このプロパティのゲッターを実装するのは派生クラス次第です。

于 2012-05-24T07:17:09.747 に答える