2014-05-15 3 views
0

IList는 인터페이스입니다. 저는 제네릭을 배우기 시작했습니다. 그리고 인터페이스는 클래스가 그것의 메소드를 사용할 것을 약속하는 계약이라는 것을 알고 있습니다. 그래서 같은 값 형식처럼 사용하여 그것에 대해 생각해 본 적이 :C# IList 인터페이스 유형 또는 다른 인터페이스 유형의 역할 사용 방법은 무엇입니까?

사람이 무엇을하는지 설명해 주시겠습니까 및 유형과 같은 인터페이스를 사용하는 경우의 사용을 생각하는 방법 :

IList<Writer> someName; 

내가 여기에 일반적인 만드는 오전를 IList 인터페이스의 typ. 그러나 인터페이스는 클래스가 아니므로 어떻게 그 역할을 상상해야합니까?

나는 오해하고 있습니까?

답변

0

구성원/변수가 인터페이스로 선언되면 해당 계약을 구현하는 모든 클래스로 인스턴스화 할 수 있습니다. 예를 들어 someNameList<Writer>()으로 인스턴스화 할 수는 있지만 new IList<Writer>()을 인스턴스화 할 수는 없습니다.

IList<Writer> someName = new List<Writer>(); 
// someName can access any member of IList, but not specific members of List 
+0

오케이 그래서 계약서/인터페이스를 구현 한 새로운 클래스로 IList를 인스턴스화 한 후 다음 단계에서 무엇을하고 싶습니까? IList 메서드 사용? 작성자가 IList 인터페이스를 구현해야하는 경우 IList 인터페이스에 IList 인터페이스를 할당해야하는 이유는 무엇입니까? –

+0

인터페이스의 모든 구성원이지만 인터페이스에없는 인스턴스화 된 개체의 구성원은 아닙니다. – Mephy

0
IList<Writer> someName; 

는 형식 매개 변수로 지정된 Writer과 함께 IList<T> 인터페이스를 구현하는 모든 클래스의 인스턴스에 대한 참조를 개최한다.

0
// Returning from list 
     List<Writer> myWriters = new List<Writer>(); 
     myWriters.Add(new Writer("Andy", "FL")); 
     myWriters.Add(new Writer("Mary", "FL")); 
     myWriters.Add(new Writer("Ken", "CA")); 
     myWriters.Add(new Writer("Robert", "WA")); 
     myWriters.Add(new Writer("Brian", "CA")); 

     IList<Writer> roWriters; 
     roWriters = myWriters.AsReadOnly(); 

이렇게 말할 수 있습니까? 위의 IList 사용 myWriters 허용 .AsReadOnly(); 방법? 그렇지 않으면 가능하지 않을까요? .AsReadOnly(); IList no List 자체의 메소드입니까?

+0

AsReadOnly()는 List의 메서드입니다. 'myWriters.AsReadOnly()'만 사용할 수는 있지만'roWriters.AsReadOnly()'는 사용할 수 없습니다. 둘 다 함께'.Add (item)'을 사용할 수있다. – Mephy

+0

그래서 IList의 역할은 무엇입니까? –

+0

이 경우 특별한 것은 없습니다. 'List roWriters'를 선언 할 수 있으며이 코드는 똑같은 일을 할 것입니다. 일반적으로 매개 변수를 요청하거나 클래스 필드를 선언 할 때 더 유용합니다. 예를 들어, 화면에 뭔가의 목록을 출력하는 메소드는 매개 변수에'IList '을 요청하고'List '또는'Something []'중 하나를 전달할 수 있는데, IList '. – Mephy