繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> 一个有趣的例子:)关于delegate

一个有趣的例子:)关于delegate

2007-07-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:namespace DelegatesCS { using System; public class Wisdom //包含代理的类 { public delegate string GiveAdvice(); public string OfferAdvice(GiveAdvice words) { return words(); } } public class Paren...

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));

}

}

}

责任编辑:admin
相关文章