2011-09-08 4 views
0

C#두 개의 인터페이스 인스턴스가 서로 참조 할 수 있습니까?

Interface A, 
Interface B, 

Class AA:A 
{ 

public AA(A a) 
{ 
//... 
} 

} 

Class BB:B 
{ 

public BB(B b) 
{ 
    //... 
} 

} 

코드가 제대로 작동하고 순환 참조 문제가 발생하지 않습니다?

+0

이것은 인터페이스와 관련이없는 것 같습니다. AA는 AA를 취할 수 있습니다. 그것은 마지막 요소가 필연적으로 null 인 연결된 목록입니다. – usr

답변

2

왜 안 되니? 문법은 제쳐두고, 자기 - 유사 구조가 컴퓨터 과학 전체에 나타난다. 이진 트리를 고려해보십시오. 각 노드는 두 개의 다른 트리 (루트 노드로 표시)에 대한 참조를가집니다. 이러한 트리를 만드는 일반적인 방법은 하나의 유형이 아니라 다른 유형의 다른 유형에 대한 참조로 생성되는 유형입니다.

는보다 일반적으로, 타입 시스템의주기는 객체 그래프상의 사이클과 동일하지 않다. 일반적으로 첫 번째는 의도적으로 설계되었지만 두 번째 방법은 버그로 변하는 방법이 있습니다.

+0

개체 그래프주기가 일반적으로 버그가 될 수있는 이유에 대해 자세히 설명해 주시겠습니까? 물론 사이클은 직렬화 같은 특정 경우에 문제를 야기하지만 일반적으로 종종 (심지어 MVP/MVVM이라는 이름의) 디자인 패턴의 일부로 자주 발생합니다. –

+0

(내 경험상) 예상치 못한 경우에만. 재귀 함수로 그러한 사이클을 순조롭게 탐색하면 무한 강하가 발생합니다. – phs

+0

그러나 자신이 개체 그래프에서주기가 발생할 수있는 코드를 작성하는 경우 [주기 검색 알고리즘] (http://en.wikipedia.org/wiki/Cycle_detection)이 나와 있습니다. –

관련 문제