인터페이스는 함수의 리턴 유형일 수 있습니다. 그렇다면 장점은 무엇입니까? 예 : 인터페이스 배열이 반환되는 위치는 다음과 같습니다.리턴 유형으로 인터페이스
public interface Interface
{
int Type { get; }
string Name { get; }
}
public override Interface[] ShowValue(int a)
{
.
.
}
인터페이스는 함수의 리턴 유형일 수 있습니다. 그렇다면 장점은 무엇입니까? 예 : 인터페이스 배열이 반환되는 위치는 다음과 같습니다.리턴 유형으로 인터페이스
public interface Interface
{
int Type { get; }
string Name { get; }
}
public override Interface[] ShowValue(int a)
{
.
.
}
예, 인터페이스를 반환 할 수 있습니다.
는 각 인터페이스를 Ic
를 구현의 클래스를 A
및 B
을 가정 해 봅시다 :이 예 func
에서
public interface Ic
{
int Type { get; }
string Name { get; }
}
public class A : Ic
{
.
.
.
}
public class B : Ic
.
.
.
}
public Ic func(bool flag)
{
if (flag)
return new A();
return new B();
}
그것은 다른 개체를 반환 할 수 — 팩토리 메소드처럼!
"Ic를 구현 한 객체를 반환"으로 인터페이스 반환을 해석 할 수 있습니까? 인터페이스의 인스턴스를 만들 수는 없지만 반환 할 수있는 것은 매우 혼란 스럽습니다. –
예. 가능합니다.
이점은 반환 (및 입력) 유형을 추상화 할 수 있다는 것입니다.
public interface IFruit{ }
public class Apple: IFruit{}
public class Pear: IFruit{}
...
public function IFruit SelectRandomFromBasket(Basket<IFruit> basket){
// this function can return Apple, Pear
}
네, 가능하며 공개 기능을 위해서는 좋은 방법입니다. 대한
왜 귀하의 질문에, 내가 예를 들어, 그래서 기존의 답변을 참조하시기 바랍니다, 다른 사람의 답변을 붙여 복사하지 않습니다의 부분 :
같은 주제에 대해 다른 질문/답변을 찾은 경우 [중복으로 닫기] (http : // stackoverflow. co.kr/faq # close) 다른 게시물에 링크하는 대신? –
@ChaseFlorell 물론입니다.실제로 나는 내 자신의 답을 쓰고 있었고, * 이것이 이미 답변되었을 수도 있다는 것을 깨달았습니다. 그래서 제 자신의 텍스트를 지우고 도움이되는 링크를 추가했습니다 ... 그러나 어쨌든 중복 된 것으로 결론을 내렸습니다. – ken2k
예 interface
은 매우 유효한 반환 값입니다. 인터페이스의 정의를 반환하지 않고 해당 인터페이스의 인스턴스을 반환한다는 것을 기억하십시오.
public interface ICar
{
public string Make { get; }
}
public class Malibu : ICar
{
public string Make { get { return "Chevrolet"; } }
}
public class Mustang : ICar
{
public string Make { get { return "Ford"; } }
}
이제 자신의 각각의 값이 다른 ICar
인스턴스의 수를 반환 할 수 :
장점
은 매우 분명하다, 다음 코드를 고려하십시오.하지만 인터페이스를 사용하는 주된 이유는 잘 알려진 계약서에서 어셈블리간에 공유 될 수 있기 때문에 누군가 ICar
을 전달할 때 아무 것도 알지 못하지만 실제로는 알 수 있습니다. a Make
. 또한 공용 인터페이스를 제외하고는 아무 것도 실행할 수 없습니다. 따라서 Mustang
에 이라는 public
구성원이있는 경우 인터페이스에없는 경우 해당 구성원을 알 수 없습니다.
인터페이스의 인스턴스를 만들 수 없기 때문에 매우 혼란 스럽지만 인터페이스 인스턴스를 반환 할 수 있습니다. 인터페이스를 구현 한 객체의 인스턴스를 반환한다는 의미였습니까? –
(1) 예. (2) 다형성을 허용하기 때문입니다. 의 –
가능한 중복 [C 번호 - 목록 또는 IList의 ] (http://stackoverflow.com/questions/400135/c-sharp-listt-or-ilistt) 목록 또는 IList의 ] (HTTPS의 –
ken2k
가능한 중복 : //stackoverflow.com/questions/400135/listt-or-ilistt) – Squazz