2009-08-19 4 views
0

다음은 내가 수행중인 작업의 빠른 예입니다. 기본적으로 하나의 클래스 또는 별도의 클래스로 구현할 수있는 여러 인터페이스가 있으므로 각 응용 프로그램을 응용 프로그램에 저장합니다. 내 유일한 질문은 변수 myInterface, yourInterface 및 ourInterface에 관한 것입니다. 그들은 동일한 객체를 참조합니까? 아니면 3 개의 다른 객체가 있습니까?.Net에서 다중 인터페이스 및 객체 인스턴스 구현

interface IMyInterface 
{ 
    void MyFunction(); 
} 

interface IYourInterface() 
{ 
    void YourFunction(); 
} 

interface IOurInterface() 
{ 
    void OurFunction(); 
} 

public class MainImplementation : IMyInterface, IYourInterface, IOurInterface 
{ 
    public void MyFunction() { } 
    public void YourFunction() { } 
    public void OurFunction() { } 
} 

private IMyInterface myInterface; 
private IYourInterface yourInterface; 
private IOurInterface ourInterface; 

static void Main(string[] args) 
{ 
    myInterface = new MainImplementation() as IMyInterface; 
    yourInterface = myInterface as IYourInterface; 
    ourInterface = myInterface as IOurInterface; 
} 

보너스 : 더 좋은 방법이 있습니까?

+0

저는이 질문의 제목에 약간 혼란 스럽습니다. ByVal 또는 ByRef는 제공된 코드 샘플과 어떤 관련이 있습니까? 모든 메소드는 매개 변수를 사용하지 않습니다. – JohnFx

+0

해결되었습니다. 바라기를, 그것은 조금 더 낫다. 긴 날이었습니다 :) – kevindaub

답변

5

그들은 모두 동일한 객체를 참조합니다. 따라서 다음 형식의 변경 :

ourInterface.X = ... 

'모든보기'에 반영됩니다.

효과적으로 당신이 캐스팅으로 무엇을하고 있는지 (그리고 나는 당신이 마지막으로 'IOurInterface'로 생각했다) 데이터의 다른 '뷰'를 제공하고 있다고 가정합니다. 이 경우, 각 인터페이스는 각각 하나의 함수를 엽니 다.

+0

고마워요. 나는 그런 감정을 가지고 있었지만 나는 단지 검증을 필요로했다. – kevindaub

3

이들은 동일한 인스턴스를 참조합니다. 입니다.

2

1 = 개체가 새 것입니다. 모두 동일한 인스턴스를 참조합니다.

0

이들은 동일한 객체를 참조합니다. 오브젝트를 다른 오브젝트로 변환하면 컴파일러는이 오브젝트에서 메소드가 호출 될 때이 클래스에서 정의 된 메소드를 다른 클래스와 달리 사용하게됩니다.