여기있는 누군가가 내가 틀린 가정을 설명 할 수 있기를 바라고 있습니다. C# 4.0에는 2 개의 인터페이스와 그 둘 모두를 구현하는 클래스가 있습니다. 난상속받지 않는 다른 인터페이스로 인터페이스 전송하기
public interface IFirstInterface
{
void Method1();
}
public interface ISecondInterface
{
void Method2();
}
public class InterfaceImplementation : IFirstInterface, ISecondInterface
{
public void Method1() { }
public void Method2() { }
}
public class SomeClass
{
public void SomeMethod()
{
IFirstInterface first = new InterfaceImplementation();
first.Method1();
// Shouldn't the next line return null?
ISecondInterface second = first as ISecondInterface;
// second is not null and the call to Method2() works fine
second.Method2();
}
}
: 방법에서 나는 두 인터페이스를 구현하고 어떻게 든 다음 코드와 같이 두 번째 인터페이스로 성공적으로 캐스팅 할 수있는 클래스를 사용하여 인스턴스화 첫 번째 인터페이스의 유형의 변수를 선언 왜 캐스팅이 성공했는지 이해하려합니다. 예, 클래스는 두 인터페이스를 구현하지만 첫 번째 변수는 IFirstInterface (ISecondInterface에서 상속받지 않음)로 선언되므로 캐스팅은 여전히 실패해야합니다.
'as'를 사용하지 않는 등의 다른 방법으로 코드를 재구성하려고 시도했지만 캐스트가 여전히 성공적입니다.
무엇이 누락 되었습니까?
이것은 내가 무슨 일이 일어나고 있는지를 확인합니다. 감사합니다 –
많은 많은 감사, 정말 필요했습니다. +1 (가능한 경우 +10). – Arjang