오브젝트 A 컬렉션이 있습니다. 각 A에는 B라는 개체와 관련된 필드가 있습니다. 그 중 하나는 다른 컬렉션입니다. 즉, 각 B는 As 모음집의 부속 집합에 붙습니다 (단 개념적으로는 코드가 아님). 이 필드 - A와 B의 상관 관계 -는 시스템 수명 기간 동안 변경 될 수 있습니다. 이 구조의 변경을 막는 시스템 요구 사항이 있습니다.반복 위치()와 C의 복수 콜렉션 비교 #
각 B의 A 집합에서 반복적으로 연산을 수행해야하는 경우 A 컬렉션에서 Where() 메서드를 반복하거나 B가 소유 한 다른 컬렉션을 만들고 더하기 및 관련 항목을 제거하십시오.
내가 코드에서이 캡처 할 수 있다면 어디 보자 :
class A {
public B owner;
...
}
class B {
...
}
class FrequentlyCalledAction {
public DoYourThing(B current) {
List<A> relevantItems = listOfAllAItems.Where(x => x.owner == current).ToList()
foreach (A item in relevantItems) {
...
}
}
}
대를 : 사실
class A {
public B owner;
...
}
class B {
public List<A> itsItems;
}
class FrequentlyCalledAction {
public void DoYourThing(B current) {
foreach (A item in current.itsItems) {
...
}
}
}
class AManager {
public void moveItem(A item, B from, B to) {
from.itsItems.remove(item);
to.itsItems.add(item);
}
}
얼마나 자주합니까? 얼마나 자주 A -> B 관계가 변하는가? A와 B 세트는 얼마나 큽니까? B가 A에 대한 참조를 가질 수 없습니까? – Jodrell
DoYourThing은 시스템에서 가장 자주 호출되는 호출 중 하나입니다. A -> B 관계는 4 회의 DoYourThing 호출마다 한 번씩 변경됩니다. 그들은 모두 작은 세트입니다 - 아마 50 B, 아마도 100 A. – Shane
A는 소유자의 소유자를 얼마나 자주 알아야합니까? 주인에게 A를 보관하고 필요할 때 주인이 누구인지 생각해 낼 수 있습니까? – Joey