内蒙古 其他
IT茶座,IT公司查询    
[搜索] [Google 站内搜索] 添加新公司    
一个有趣的例子:)关于delegate
namespace DelegatesCS
{
    using System;

    public class Wisdom //包含代理的类
    {
        public delegate string GiveAdvice();
        public string OfferAdvice(GiveAdvice words)
        {
            return words();
        }
    }
    public class Parent //基类
    {
        public virtual string Advice()
        {
            return("Listen to reason");
        }
        ~Parent() {}
    }
    public class Dad: Parent //子类
    {
        public Dad() {}
        public override string Advice()
        {
            return("Listen to your Mom");
        }
        ~Dad() {}
    }
    public class Mom: Parent //子类
    {
        public Mom() {}
        public override string Advice()
        {
            return("Listen to your Dad");
        }
        ~Mom() {}
    }
    public class Daughter //不继承与基类的类
    {
        public Daughter() {}
        public string Advice()
        {
            return("I know all there is to life");
        }
        ~Daughter() {}
    }


    public class Test
    {
        public static string CallAdvice(Parent p)//使用基类
        {
            Wisdom parents = new Wisdom();
            Wisdom.GiveAdvice TeenageGirls = new Wisdom.GiveAdvice(p.Advice);//将Advice方法委托给TeenageGirls委托对象
            return(parents.OfferAdvice(TeenageGirls));
        }


        public static void Main()
        {
            Dad d = new Dad();
            Mom m = new Mom();
            Daughter g = new Daughter();
            //以下两个为衍于基类的类
            Console.WriteLine(CallAdvice(d));
            Console.WriteLine(CallAdvice(m));
            //以下为未衍于基类的类,如果调用将出错。
            //Console.WriteLine(CallAdvice(g));
        }
    }
}


阅读:
录入:

关于我们 | 联系我们 | 服务条款 | 帮助中心 | 公司评论 | 会员注册
沪ICP证041070号 Copyright©2007 ITCups All rights Reserved