2016-12-08 1 views
-1

나는 클래스 ArrayList에서 방법 AddRange를 사용하고 난 예를 발견 Queue 클래스는 인터페이스 ICollection에서 상속받습니다. 전화 AddRange에서 어떤 일이 일어나는지 설명하고 인터페이스 유형 ICollectionQueue 클래스 유형을 복사하십시오.인터페이스 ICollection에와 AddRange C#은/NET

+1

귀하의 질문을 이해할 수 없습니다. 그러면 ICollection의 요소가 새 목록에 하나씩 추가됩니다. – HimBromBeere

+1

사이드 노트 : 더 이상'ArrayList'를 사용하지 말고 일반리스트'List '를 사용하십시오. –

+0

나는이 기능을 잘 알고있다. 하지만 ICollection 인터페이스의 Queue 객체 (myQueue)를 복사하면 힙이나 스택에서 어떤 일이 발생합니까? AddRange가 ICollection 인터페이스를 기대한다면 어떻게 AddRange의 Queue 클래스를 패러럴로 사용할 수 있습니까? – leoleo

답변

0

AddRange에 대한 매개 변수로 Queue 유형을 사용할 수 있으며, ICollection이 매개 변수로 필요한 경우에도 마찬가지입니다. QueueICollection에서 상속 되었기 때문에 작동합니다. 즉, ICollection에있는 모든 메서드 (및 속성)가 포함되어 있으므로 Queue은 여전히 ​​ICollection입니다.

또 다른 예 :

interface IBear 
{ 
    void Hunt(); 
    void Sleep(); 
    void Eat(); 
} 

class Grizzly : IBear 
{ 
    public int Size { get; set; } 
    public int Weight { get; set; } 

    public void Eat() 
    { 
     // 
    } 

    public void Hunt() 
    { 
     // 
    } 

    public void Sleep() 
    { 
     // 
    } 
} 

class BearCave 
{ 
    private ArrayList bears; 
    public BearCave() 
    { 
     bears = new ArrayList(); 
    } 

    public void AddBear(IBear bear) 
    { 
     bears.Add(bear); 
    } 
} 

메인 프로 그램 : 당신이 인터페이스 IBearIBear에서 상속 된 클래스 Grizzly을 가지고이 작은 프로그램에서

class Program 
{ 
    static void Main(string[] args) 
    { 
     BearCave cave = new BearCave(); 
     Grizzly grizzly = new Grizzly() { Size = 2, Weight = 150 }; 
     cave.AddBear(grizzly); 
    } 
} 

. BearCave 클래스와 AddBear 메서드도 있으며 IBear이 필요합니다. Grizzly 여전히 Bear (IBear) 때문에

는 메인 programm에 당신은 Grizzly BearCave에 추가 할 수 있습니다.

+0

감사합니다. 내 질문은 : AddRange 메서드에 개체를 제공하면 스택과 힙이 어떻게됩니까? .NET에서 ICollection 형식으로이 개체를 변환하는 방법 ICollection 형식에서 개체를 형식 클래스로 변환하는 방법은 무엇입니까? – leoleo

+0

무슨 뜻인지 모르겠다. 'ICollection'이 예상되면'Queue'를 사용할 수 있는지 또는'AddRange'-method가 큐의 항목을리스트에 추가하는 방법을 알고 싶습니까? – daniel59

관련 문제