.net基础扫盲-小例子串委托、匿名方法、lamuda表达式

我把委托理解为:委托是一种方法的格式,当然他也是一种类型。

只要是方法的格式跟委托定义的格式是一样的,那么就可以把该方法附加给该委托。看以下demo

声明委托:

<p style="margin:0in;font-family:微软雅黑;font-size:12.0pt"></p><pre name="code" class="csharp">public delegate void Add(int a,int b );

声明一个格式相同的方法:

        static void OtherMethod(int a ,int b)
        {
            Console.WriteLine(a+b);
        }

给类声明一个委托类型的成员变量

public class Person
    {
        public string Name { set; get; }
        public string Age { set; get; }
        public Add MyAdd ;
    }

将方法附加给委托,调用,测试如下:

static voidMain(string[] args)
{
    Person p1 =new Person ();
    p1.MyAdd = OtherMethod;
    p1.MyAdd(7, 8);

    Console.ReadLine();
}

控制台输出—— 15

如果我们定义的OtherMethod不常用,就没有必要单独声明一个方法。可以用匿名方法,即:在给委托附加方法的时候,直接构造一个跟委托格式相同的匿名方法就可以了:

写法如下:

p1.MyAdd = delegate(inta, int b) { Console.WriteLine(a + b); };

匿名方法,顾名思义,没有方法名,只有方法参数和方法的算法,可真是够简单了。

同样我们也可以直接用lamuda表达式,直接构造一个方法,如下:

 p1.MyAdd = (int a, int b) => {Console.WriteLine(a + b); };

匿名方法和拉姆达表达式的出现,使得写方法变得更加简便了。

时间: 2024-10-14 00:28:04

.net基础扫盲-小例子串委托、匿名方法、lamuda表达式的相关文章

委托-异步调用-泛型委托-匿名方法-Lambda表达式-事件

1. 委托 From: http://www.cnblogs.com/daxnet/archive/2008/11/08/1687014.html 类是对象的抽象,而委托则可以看成是函数的抽象.一个委托代表了具有相同参数列表和返回值的所有函数. [csharp] view plaincopy class Program { delegate int CalculateDelegate(int a, int b); int add(int a, int b) { return a + b; } s

C#委托------匿名方法

namespace out_ref { //委托匿名方法 public delegate void Myadd(); class Program { static void Main(string[] args) { Say(delegate() { Console.WriteLine("哈哈,就是这么帅!"); }); Console.ReadKey(); } static void Say(Myadd myadd) { myadd(); } } } //委托匿名方法 求两个数之和

18、(番外)匿名方法+lambda表达式

概念了解: 1.什么是匿名委托(匿名方法的简单介绍.为什么要用匿名方法) 2.匿名方法的[拉姆达表达式]方法定义 3.匿名方法的调用(匿名方法的参数传递.使用过程中需要注意什么) 什么是匿名方法? 匿名方法是C#2.0引入的一个新特性,它允许开发者声明自己的函数代码而无须使用委托函数. C#为委托提供一种机制,可以为委托定义匿名方法,匿名方法没有名称,编译器会定指定一个名称,匿名方法中不能使用跳转语句跳转到该匿名方法的外部,也不能跳转到该方法的内部.也不能在匿名方法外部使用的ref和out参数.

委托delegate 泛型委托action&lt;&gt; 返回值泛型委托Func&lt;&gt; 匿名方法 lambda表达式 的理解

1.使用简单委托 namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyBookDel myBookDel; //普通方法 public static void MathBook(int a) { Console.WriteLine("我是数学书" + a); } static void Main(string[] args) { myBookDel += Ma

委托匿名方法

委托学习笔记后续:泛型委托及委托中所涉及到匿名方法、Lambda表达式

引言: 最初学习c#时,感觉委托.事件这块很难,其中在学习的过程中还写了一篇学习笔记:委托.事件学习笔记.今天重新温故委托.事件,并且把最近学习到和委托相关的匿名方法.Lambda表达式及泛型委托记录下来,以备复习使用. 委托: 日常工作中,常常见到委托用在具体的项目中.而且委托使用起来相对来说也是非常简单的,下面列举一个委托实例用以说明如何使用委托,代码如下: class Program { public delegate int CalculateDelegate(int x, int y)

java基础知识小小结

java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程序的文件名就可以随意命名了. 文档注释,是以单斜线加两个星形标记( /**)开头,并以一个星形标记加单斜线( */)结束.用这种方法注释的内容会被解释成程序的正式文档,并能包含进如 javadoc之类的工具生成的文档里,用以说明该程序的层次结构及其方法. Java 把整数常量的数据类型均视为 int

委托、匿名方法、Lambda表达式的演进

假设给我们一个泛型对象List<T>,T为int类型,要求我们使用该对象方法FindAll(Predicate<T> match)从中找出该List中的偶数,您如何实现? 说明一下:Predicate<T>是一个泛型委托,它的原型为public delegate bool Predicate<T>(T obj),该委托传入一个T类型对象,经逻辑判断后返回布尔值. 委托 可能您首先想到的是用委托实现,实现方法如下: //方法1staticvoid Method

C#基础知识之事件和委托

本文中,我将通过两个范例由浅入深地讲述什么是委托.为什么要使用委托.事件的由来..Net Framework中的委托和事件.委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论. 委托的引入:将方法作为方法的参数 我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问候的话语: public void GreetPeople(string name) { EnglishGreeting(name); } public