제가 C#의 해쉬 테이블 기준으로해서 짠 바로는....
public class Wife{
private ProgrammerHusband myHusband; //남편 클래스
public void OrderToHusband(){
myHusband = new ProgrammerHusband();
//남편에게 '쇼핑몰(가게)'를 지정해주고, 거기서 어떻게 할건지 상세히 주문한다.
myHusband.order += delegate(ShoppingMall shoppingmall) {
Hashtable ShoppingBag = new Hashtable();
ShoppingBag.Add("Milk", 1); //우유 한 개 사와.
if(shoppingmall.Mall.ContainsKey("Egg")) // 그리고 만약 계란이 있으면.
ShoppingBag["Milk"] = 6; // 6개 사와.
return ShoppingBag;
};
Hashtable result = myHusband.Go(new ShoppingMall()); // 심부름을 보내고 그 결과를 저장.
if((int)result["Milk"] != 1) // 심부름결과 우유를 1개 제대로 안 사왔으면.
Console.WriteLine("남편에게 등짝 스매싱!");
}
}
대충 이러면 되지 않을까요?ㅋㅋㅋㅋ
이 아래는 프로그래머 남편과 쇼핑몰 클래스
public class ProgrammerHusband{
public delegate Hashtable ShoppingOder(ShoppingMall shoppingmall); //쇼핑몰 주문을 받는 델리게이트 형식 선언.
public event ShoppingOder order; //아내의 주문을 저장할 이벤트 델리게이트.
//심부름 가라고 명령하는 메소드.
public Hashtable Go(ShoppingMall shoppingmall){
return order(shoppingmall);
}
}
//쇼핑몰 클래스
public class ShoppingMall{
private Hashtable mall;
public ShoppingMall(){
mall = new Hashtable();
mall.Add("Egg", 1000);
mall.Add("Milk", 1000);
}
public Hashtable Mall{get{return mall;}}
}
결론 : 심부름 메소드를 잘못 짠 아내 잘못(...)