인터페이스가 인스턴스를 만들 수 없습니다. 하지만이 코드는 작동합니다.인터페이스의 개요?이 코드는 어떻게 작동합니까?
IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"};
이 코드는 인스턴스 인터페이스를 만들지 않습니다. 어떻게 작동합니까?
인터페이스가 인스턴스를 만들 수 없습니다. 하지만이 코드는 작동합니다.인터페이스의 개요?이 코드는 어떻게 작동합니까?
IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"};
이 코드는 인스턴스 인터페이스를 만들지 않습니다. 어떻게 작동합니까?
문자열 배열이 인스턴스입니다. 단지 그 인터페이스를 구현하는 것입니다.
아니요. 사용중인 new[]
표현식은 IEnumerable<string>
인터페이스를 구현하는 string[]
클래스 인스턴스를 만듭니다.
=
의 우측 표현식 IEnumerable<string>
구현 문자열 배열 string[]
의 인스턴스를 생성하고, 인스턴스는 그 유형 IEnumerable<string>
이다 myStr
라는 변수에 할당된다. 따라서 인스턴스의 유형은 string[]
이지만 IEnumerable<string>
으로 동작합니다.
아니요 당신은 방금 인터페이스의 인스턴스가 아니며 사실 인터페이스의 인스턴스를 초기화 할 수없는 인터페이스 참조에 문자열 배열을 할당했습니다.
아래 코드는 myStr
의 실제 유형을 인쇄합니다. 측면으로
IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"};
Console.WriteLine(myStr.GetType());
는 해당 인터페이스의 참조에 대한 인터페이스를 구현하는 클래스의 인스턴스를 할당 할 수 있습니다 그리고 우리가
polymorphism로 부르는 것이다.