通过一个例子简单几种委托的使用

第一种,通过new 关键字创建对象  特别注意:这种方式必须要先有根据委托创建的方法与之关联,否则不能使用。  或者直接让委托变量直接指向某个具体的方法(前提是方法要存在)

格式为:同一命名空间下

   public delegate void One();//无参数也无返回值

    class Program
    {
        static void Main(string[] args)
        {

            One objOne0= new One(其中必须有方法作为参数);
            One objOne00=必须的方法;

        }
/////书写根据委托对象创建的方法
    }

第二种,匿名函数

格式为:同一命名空间下

      public delegate void One();//无参数也无返回值

     public delegate void Two(string word);有参数但没有返回值

     public delegate string Three(string word);有参数也有返回值
    class Program
    {
        static void Main(string[] args)
        {
            One objOne = delegate () {方法体 };//匿名函数  无参数也无返回值

Two   objTwo=delegate(string word){方法体};//有参数无返回值的匿名函数

Three  objThree=delegate(string word){return word};//有参数有返回值的匿名函数

        }
    }

第三种,lambda表达式

格式为:在同一命名空间下

 public delegate void One();//无参数也无返回值
    public delegate void Two(string word); //有参数但没有返回值
    public delegate string Three(string word);//有参数也有返回值

    class Program
    {
        static void Main(string[] args)
        {

            One objOne = () => { };//lambda 表达式 无参数也没有返回值

            Two objTWO=(string word)=>{ };//有参数但没有返回值的lambda表达式

            Three objThree = (string word) => { return word; };//有参数有返回值的lambda表达式
        }
    }

泛型集合的lambda表达式:

1.首先创建泛型集合类并初始化

List<int> List = new List<int>(){1,2,3,4,5,6,7};

2,使用lambda表达式删除集合中的元素

list.RemoveAll(n=>n>4);

运行结果为1,2,3,4

时间: 2024-10-22 00:10:08

通过一个例子简单几种委托的使用的相关文章

用一个简单的例子来演绎事件委托

本篇博文,Insus.NET想使用一个超简单的例子来演绎事件委托.我们在开发网页时,刚开始时在网页的顶部放一个铵钮(web control),想实现一个功能. 在xxx.aspx.cs: OK,某一天,此网页的内容随时间而增长,出现了滚屏.想在网页的底再放一个铵钮,这个铵钮执行事件跟网页顶部铵钮一的事件一样的. 这样子,不管是点击按哪一个铵钮,所执行的事件是一样的:也许一开始你并没有想到onClick的事件名,直接使用铵钮一的onClick的名称,而是如下面的写法:在xxx.aspx.cs,我们

[编译] 1、第一个makefile简单例子

前言 本篇用一个最简单的例子引入makefile,教你编写第一个makefile 正文 在Download/aa文件夹下有a.c和makefile文件 1 [email protected]:~/Downloads/aa$ ls 2 a.c makefile 其中a.c为: 1 #include<stdio.h> 2 int main() 3 { 4 int i,j; 5 for(i=0;i<10;i++) 6 { 7 for(j=2*i+1;j>0;j--) 8 { 9 prin

一个最简单的Socket通信例子

所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求.  Socket和ServerSocket类库位于java.net包中.ServerSocket用于服务器端,Socket是建立网络连接时使用的.在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话.对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别.不管是

lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子:

Python的lambda匿名函数 def f(x):    return x**2 print f(4) Python中使用lambda的话,写成这样 g = lambda x : x**2print g(4) lambda表达式在很多编程语言都有对应的实现.比如C#: var g = x => x**2Console.WriteLine(g(4)) 那么,lambda表达式有什么用处呢?很多人提出了质疑,lambda和普通的函数相比,就是省去了函数名称而已,同时这样的匿名函数,又不能共享在别

使用springAPI以及自定义类 实现AOP的一个例子-aop编程

Spring的另一个重要思想是AOP,面向切面的编程,它提供了一种机制,可以在执行业务前后执行另外的代码,Servlet中的Filter就是一种AOP思想的体现,下面通过一个例子来感受一下. 假设我们现在需要在针对数据库进行CRUD操作时添加一组日志,即在执行CRUD方法前后分别加上一句话,实现简单的面向切面编程的功能.我用到的是spring4,在配置文件上较之之前的版本可能有些不同. 使用springAPI来实现AOP,除了spring必不可少的核心jar包,还需要两个jar包需要导入: as

我如果能在内核中很方便地使用HIGHUSER内存该有多好...一个例子

话说用户态访问内核内存很简单,将这块内核内存映射到用户地址空间即可.依托一个字符设备,实现其mmap回调函数,在用户进程打开那个设备,mmap之,很容易实现用户进程直接访问内核内存. 但是反过来呢?内核访问用户内存.理论上也很简单,因为所有进程的内核态地址空间都是共享的,所以想访问哪个进程的内存,就切换到那个进程的地址空间,这 将丝毫不会影响当前的执行流.事实上也是这么简单,use_mm就是干这个的,不过既然要切换地址空间,那么当前task的地址空间就必须是明确的,因此 就不能在任意上下文调用u

Javascript 进阶 面向对象编程 继承的一个例子

Javascript的难点就是面向对象编程,上一篇介绍了Javascript的两种继承方式:Javascript 进阶 继承,这篇使用一个例子来展示js如何面向对象编程,以及如何基于类实现继承. 1.利用面向对象的写法,实现下面这个功能,实时更新数据的一个例子: 2.使用对上面类的继承,完成下面的效果: 好了,不多说,js的训练全靠敲,所以如果觉得面向对象不是很扎实,可以照着敲一个,如果觉得很扎实了,提供了效果图,可以自己写试试. 1.第一个效果图代码: [javascript] view pl

虚函数和模板编程的一点共性和特征模板的一个例子

最近在看元编程中,对虚函数和模板编程有一点点感悟,写一篇博客简单总结一下. 虚函数和模板是C++里面很棒的特征,他们都提供了一种方法,让程序在编译中完成一些计算,去掉的这些计算在比较low的编程方式中,是需要在程序运行中执行的.在这里,我要强调的是:"在编译过程中完成一些计算". 我会举两个例子,一个是虚函数的,比较简单,另一个例子是关于特征模板的,在例子中,根据模板参数的类型自动选择模板的底层数据结构. 第一个例子是比较简单的虚函数的例子,有很多种水果的类型,我们有一个函数要展示他们

C#实现一个最简单的HTTP服务器

简介 本文用C#实现了一个最简单的HTTP服务器类,你可以将它嵌入到自己的项目中,或者也可以阅读代码来学习关于HTTP协议的知识. 背景 高性能的WEB应用一般都架设在强大的WEB服务器上,例如IIS, Apache, 和Tomcat.然而,HTML是非常灵活的UI标记语言,也就是说任何应用和后端服务都可以提供HTML的生成支持.在这个小小的例子中,像IIS,.Apache这样的服务器消耗的资源太大了,我们需要自己实现一个简单的HTTP服务器,将它嵌入到我们的应用中用来处理WEB请求.我们仅需要