2012-05-24 4 views
0

문제는 이상한 속성을 구현하는 컬렉션의 기본 클래스에 대해서는된다IList 컬렉션 기본 클래스의 목록?

protected IList List { get; } 

1) 수집 기본 클래스에서 IList의 목록 무엇입니까? ...

2)은도 초기화되지 않습니다 ... 어떻게는

3) 때이 목록을 사용하여 ... 다음에 액세스 할 수 있습니다?

+0

'List'라는 이름의'get' 속성은'instancename.List'에 의해 접근 할 수 있습니다 – V4Vendetta

+0

이 속성은 언제 사용됩니까? ... 목적이 뭐야? –

+0

당신이'public abstract class CollectionBase : IList, ICollection, IEnumerable'에 대해 이야기하고 있다고 생각합니다. – V4Vendetta

답변

1

1) IList는 인터페이스이므로 IList의 구현 클래스는 클래스의 List 속성에서 반환 할 수 있습니다. 즉, IList의 인터페이스 사양을 수행 할 수 있다는 것만 알면됩니다.

2) 클래스에서 속성 List를 가져 오기 전에 클래스를 초기화해야합니다. IList는 IList 인터페이스를 구현하는 클래스로 초기화됩니다.

3) 이는 클래스의 사양에 따라 다릅니다. 현재 목록에있는 항목을 IList로 반환합니다.

+0

그래서 ** List * * ... List generic 클래스 또는 어떤 것이 헷갈 리지 않아도됩니까? –

+0

예, 맞습니다. – Peter

0

이 코드는 컴파일되지 않습니다. 자동으로 구현되는 속성에는 접근 및 가져 오기가 모두 있어야합니다.

는 추상 기본 클래스 내부와 추상 키워드로 표시된 경우는 컴파일 :

protected abstract IList List { get; } 

는 그런 다음이 속성의 게터를 구현하기 위해 파생 클래스에 달려있다.

+0

이것은 코드가 아닙니다 ... 속성의 Collection 기본 클래스 decleration입니다! –

+0

무슨 뜻인지 이해가 안됩니다. 그것은 나에게 코드처럼 보인다. –

+0

@DarinDimitrov 나는 그가 말하고있는 클래스에 대해 출판 된 F12의 메타 데이터라고 생각한다. – V4Vendetta

3

사실, CollectionBase 클래스 내부의 코드는 다음과 같다 : 그래서

protected IList List 
{ 
    get 
    { 
     return this; 
    } 
} 

, 그것은 오류없이 컴파일 할 수 있습니다.

파생 클래스 또는 CollectionBase 자체가 List 속성을 호출하면 목록 인스턴스 (this)를 반환합니다. CollectionBase의 하위 클래스를 디자인하는 경우 유형의 인스턴스를 IList으로 가져올 때마다이 속성을 사용할 수 있습니다.

+0

좋은 답변입니다! 너 어떻게 알았어? 문서화 된 곳은 어디입니까? – Dhananjay

+0

@Dhananjay LOL, 그는 콜렉션 기본 클래스 *에서 이렇게 말했다. 그래서 나는 CollectionBase의 소스 코드를 검사했다. :) –