delegate bool Filter(string s);
class test
{
static void Main()
{
Filter f=new Filter(A);
Display(new string[]{"ant","line","yok"},f);
}
static bool A(string s)
{
return "N".CompareTo(s)>;
}
static void Display(string[] Names,Filter f)
{
int count=;
foreach(string str in Names)
if(f(str))
console.writeline("Item {0} is {1}",count++,str);
}
}

2.组播委托

 delegate void methodinvoker();
class test
{
static void Main()
{
new test();
}
test()
{
methodinvoker m=null;
m+=new methodinvoker(Foo);
m+=new methodinvoker(Goo);
m();
}
void Foo()
{
console.writeline("Foo");
}
void Goo()
{
console.writeline("Goo");
}
}

委托能处理的事情接口也能同样处理

  interface IFilter
{
bool Filter(string s);
}
class test
{
class A:IFilter
{
public bool Filter(string s)
{
return "N".CompareTO(s)>;
}
static void Main()
{
A a=new A();
Display(new string[]{"ant","lion","yok"},IFilter f);
}
static void Display(string[] Names,IFilter f)
{
int count=;
foreach(string s in Names)
if(f(s))
console.writeline("Item {0} is {1}",count++,s);
}
}
}

注:委托处理虽然根漂亮,但委托最好用在事件上。

最新文章

  1. 使用FastJSON,将对象或数组和JSON串互转
  2. Linux下查看用户列表
  3. Dom4J对XML的创建、修改、删除等操作
  4. 一张图搞懂 Javascript 中的原型链、prototype、__proto__的关系 转载加自己的总结
  5. BattleInfo
  6. 多线程编程学习笔记——async和await(一)
  7. Python输出和输入
  8. 第四周作业&&结对编程
  9. vue中子组件通过$parent操作父组件的参数或者方法
  10. mongodb 数组查询
  11. 20165336 2017-2018-2《Java程序设计》课程总结
  12. exec可以用来执行语句的
  13. 【BZOJ4545】DQS的trie 后缀自动机+LCT
  14. Document对象关于窗口的一些属性
  15. Linux Min装机--配置JDK替换OpenJDK
  16. swagger多个分组代码展示
  17. OD 实验(一) - 修改程序标题
  18. ns2.35-classifier.cc
  19. Excle中range的一些用法
  20. Pycharm快速复制当前行到下一行Ctrl+D

热门文章

  1. C语言中‘\n'为什么能表示CRLF两个字节
  2. entity framework extended library , bulk execute,deleting and updating ,opensource
  3. 简单3d RPG游戏 之 001 生命条(一)
  4. ExtJS 获取浏览器宽度
  5. Linux按照时间查找文件
  6. 在Unity中高效工作(下)
  7. Android OTG支持USB读卡器
  8. CreateObject("Wscript.Shell")用法
  9. 【HDOJ】1720 A+B coming
  10. IPv6 tutorial 1 Get started now