나는 클래스 ArrayList
에서 방법 AddRange
를 사용하고 난 예를 발견 Queue
클래스는 인터페이스 ICollection
에서 상속받습니다. 전화 AddRange
에서 어떤 일이 일어나는지 설명하고 인터페이스 유형 ICollection
에 Queue
클래스 유형을 복사하십시오.인터페이스 ICollection에와 AddRange C#은/NET
-1
A
답변
0
AddRange
에 대한 매개 변수로 Queue
유형을 사용할 수 있으며, ICollection
이 매개 변수로 필요한 경우에도 마찬가지입니다. Queue
이 ICollection
에서 상속 되었기 때문에 작동합니다. 즉, 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);
}
}
메인 프로 그램 : 당신이 인터페이스 IBear
및 IBear
에서 상속 된 클래스 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
) 때문에
Grizzly
BearCave
에 추가 할 수 있습니다.
귀하의 질문을 이해할 수 없습니다. 그러면 ICollection의 요소가 새 목록에 하나씩 추가됩니다. – HimBromBeere
사이드 노트 : 더 이상'ArrayList'를 사용하지 말고 일반리스트'List'를 사용하십시오. –
나는이 기능을 잘 알고있다. 하지만 ICollection 인터페이스의 Queue 객체 (myQueue)를 복사하면 힙이나 스택에서 어떤 일이 발생합니까? AddRange가 ICollection 인터페이스를 기대한다면 어떻게 AddRange의 Queue 클래스를 패러럴로 사용할 수 있습니까? – leoleo