그래서이 함수는 결과를 foreach 문을 통해 반복 할 수 있지만 반환 형식이 인터페이스가 될 수있는 방법을 이해하지 못한다는 것을 이해합니다. 이 상태 MSDN 설명서에 C#에서 함수가 반환 형식으로 IEnumerable 인터페이스를 가질 수있는 방법은 무엇입니까?
public static IEnumerable<int> Func1(int number, int exponent)
{
int exponentNum = 0;
int numberResult = 1;
while (exponentNum < exponent)
{
numberResult *= number;
exponentNum++;
yield return numberResult;
}
}
:
인터페이스는 서명
정의하는 인터페이스 • 직접 인스턴스화 할 수 없습니다. 멤버는 인터페이스를 구현하는 클래스 또는 구조체로 구현됩니다.
인터페이스에 메소드 서명 만 있으면 어떻게 함수의 반환 유형이 될 수 있습니까? 이 함수는 foreach 문을 사용 가능하게하는 방법은 무엇입니까?
IEnumerable –
Sid
을 구현하는 모든 것을 반환 할 수 있습니다. 존재할 수 없으므로 아무 것도 사용할 수 없다고 제안하면 인터페이스가 무엇입니까? 분명히 그렇지 않습니다. 구체적인 클래스는 인터페이스를 구현할 수 있습니다. 객체가'IFoo'를 구현하면, 그 객체에 대한 참조를'IFoo'로 전달할 수 있습니다. 그것이 바로 그들이 원하는 것입니다. 이 경우 yield yield를 사용하여 컴파일러가 마술처럼 구현하는 구체적인 클래스를 만듭니다. –
http://stackoverflow.com/questions/15392224/interface-as-return-type – apomene