技术开发 频道

C#的委托:国王与大臣的故事

  故事中第2个大臣是带来了货物。

    class goods : MinisterReturns
    {
        
private string _goods = "精美的商品";
        
public string Goods
        {
            
get
            {
                
return _goods;
            }
        }
    }

  在我们定义好了大臣返回的东西后,我们要定义国王这个类了,这个故事中国王主要对委托大臣做的事情的结果进行处理.这里也引出了委托的作用,委托可以将方法像参数一样传递给另一个方法,然后KING只要对参数进行处理就行了,所以在定义king之前我们先定义好一个委托先。

delegate MinisterReturns MinisterOneYearDo();

  由于每一个大臣得到的都是10个金币,所以没必要传参数进去了。下面我们来定义国王要做的事情,国王要做的事情就是要处理委托做完事后的结果。

public static void handleMinisterOneyearDo(MinisterOneYearDo action)

  结果是对大臣A奖励,对大臣B奖励,对大臣C处罚。

    class king
    {
        
public static string KingsOrder = "让三个大臣用10个金币在王宫外一年的时间给国王带来一些东西.";
        
public static void handleMinisterOneyearDo(MinisterOneYearDo action)
         {
             MinisterReturns minreturns
= action();
            
if (minreturns is goldCoin)
            {
                
switch (((goldCoin)minreturns).coinsAmount)
                {
                    
case 100:
                        Console.WriteLine(
"king非常高兴大臣1的表现,奖多100个金币");
                        
break;
                    
case 10:
                        Console.WriteLine(
"king觉得这个是饭桶,变为平民");
                        
break;
                    
default:
                        
break;
                }
            }
            
if (minreturns is goods)
                Console.WriteLine(
"king非常高兴大臣2的表现,奖多10个金币");
        }
    }
0
相关文章