문제는 이상한 속성을 구현하는 컬렉션의 기본 클래스에 대해서는된다IList 컬렉션 기본 클래스의 목록?
protected IList List { get; }
1) 수집 기본 클래스에서 IList의 목록 무엇입니까? ...
2)은도 초기화되지 않습니다 ... 어떻게는
3) 때이 목록을 사용하여 ... 다음에 액세스 할 수 있습니다?
문제는 이상한 속성을 구현하는 컬렉션의 기본 클래스에 대해서는된다IList 컬렉션 기본 클래스의 목록?
protected IList List { get; }
1) 수집 기본 클래스에서 IList의 목록 무엇입니까? ...
2)은도 초기화되지 않습니다 ... 어떻게는
3) 때이 목록을 사용하여 ... 다음에 액세스 할 수 있습니다?
1) IList는 인터페이스이므로 IList의 구현 클래스는 클래스의 List 속성에서 반환 할 수 있습니다. 즉, IList의 인터페이스 사양을 수행 할 수 있다는 것만 알면됩니다.
2) 클래스에서 속성 List를 가져 오기 전에 클래스를 초기화해야합니다. IList는 IList 인터페이스를 구현하는 클래스로 초기화됩니다.
3) 이는 클래스의 사양에 따라 다릅니다. 현재 목록에있는 항목을 IList로 반환합니다.
그래서 ** List * * ... List generic 클래스 또는 어떤 것이 헷갈 리지 않아도됩니까? –
예, 맞습니다. – Peter
이 코드는 컴파일되지 않습니다. 자동으로 구현되는 속성에는 접근 및 가져 오기가 모두 있어야합니다.
는 추상 기본 클래스 내부와 추상 키워드로 표시된 경우는 컴파일 :
protected abstract IList List { get; }
는 그런 다음이 속성의 게터를 구현하기 위해 파생 클래스에 달려있다.
이것은 코드가 아닙니다 ... 속성의 Collection 기본 클래스 decleration입니다! –
무슨 뜻인지 이해가 안됩니다. 그것은 나에게 코드처럼 보인다. –
@DarinDimitrov 나는 그가 말하고있는 클래스에 대해 출판 된 F12의 메타 데이터라고 생각한다. – V4Vendetta
사실, CollectionBase
클래스 내부의 코드는 다음과 같다 : 그래서
protected IList List
{
get
{
return this;
}
}
, 그것은 오류없이 컴파일 할 수 있습니다.
파생 클래스 또는 CollectionBase
자체가 List
속성을 호출하면 목록 인스턴스 (this
)를 반환합니다. CollectionBase
의 하위 클래스를 디자인하는 경우 유형의 인스턴스를 IList
으로 가져올 때마다이 속성을 사용할 수 있습니다.
좋은 답변입니다! 너 어떻게 알았어? 문서화 된 곳은 어디입니까? – Dhananjay
@Dhananjay LOL, 그는 콜렉션 기본 클래스 *에서 이렇게 말했다. 그래서 나는 CollectionBase의 소스 코드를 검사했다. :) –
'List'라는 이름의'get' 속성은'instancename.List'에 의해 접근 할 수 있습니다 – V4Vendetta
이 속성은 언제 사용됩니까? ... 목적이 뭐야? –
당신이'public abstract class CollectionBase : IList, ICollection, IEnumerable'에 대해 이야기하고 있다고 생각합니다. – V4Vendetta