.net 扩展方法,lamada表达式 委托

扩展方法

(1)扩展方法是一种特殊的静态方法,它定义在一个静态类中,但可以在其他类的对象上向调用实例方法那样进行调用。因此,通过扩展方法,我们就可以在不修改一个类型的前提下对一个类型进行功能上的扩充,这种方法并不会产生新的类型,而是采用向已有类中加入新方法的方式来完成功能的扩展。

(2)在对已有类进行扩展时,我们需要将所有的扩展方法都写在一个静态类中,这个静态类就相当于存放扩展方法的容器,所有的扩展方法都可以写在这里面。扩展方法与普通方法的声明方式不同,扩展方法的第一个参数以this关键字开始,后面跟被扩展的类型,然后才是真正的参数列表。

复制代码 代码如下:

public static 返回类型 扩展方法名(this 要扩展的类型
参数名称[,扩展方法参数列表])
       {
       }
       public static int
ToInt32(this string s) //扩展方法将字符串转换为整形
       {
              return
Int32.Parse(s);
       }

6.Lambda表达式

(1) ”Lambda表达式”是一个匿名函数,他可以包含表达式和语句,可用于创建委托。

(2) 运算符 =>,该运算符读作:”goes to”。

(3) 格式:(input parameters)=>expression

delegate bool DelDemo(int a,int b);  //定义委托

DelDemo Lambda=(int a,int b)=>a>b  //使用Lambda表达式表示a是否大于b

Console.WriteLine(Lambda(1,4));

时间: 2024-11-13 08:53:04

.net 扩展方法,lamada表达式 委托的相关文章

C#基础加强篇---委托、Lamada表达式和事件(中)

2.Lamada表达式     C#共有两种匿名函数:匿名方法和Lamada表达式.在2.0之前的C#版本中,创建委托的唯一方法是使用命名方法.C#2.0中引入了匿名方法,匿名方法就是没有名称的方法.从C#3.0开始,就可以使用一种新语法把实现代码赋予委托——Lamada表达式. 在了解Lamada表达式之前,我们先来了解一下匿名方法.用匿名方法定义委托的语法与之前的没有区别,但在实例化时就有了一些区别. 使用命名方法创建的委托 1 class Program 2 { 3 private del

C#基础加强篇----委托、Lamada表达式和事件(上)

1.委托 C#的委托相当于C/C++中的函数指针.函数指针用指针获取一个函数的入口地址,实现对函数的操作. 委托与C/C++中的函数指针不同在于,委托是面向对象的,是引用类型,对委托的使用要先定义后实例化,最后才能调用.并且委托是类型安全的,它定义了返回类型和参数的类型,而在C/C++中,函数指针只是一个指向内存位置的指针,它不是类型安全的,我们无法判断这个指针实际指向什么,所以参数和返回类型等项就无法知道了. 定义委托 使用关键字delegate.语法类似于方法的定义,但没有方法体,定义的前面

C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询

1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为.例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该方法已过期的警告,如下图: 又如,在.Net Re

委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 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

C# 委托、匿名方法、扩展方法

一.委托的使用: 详细委托和事件解释请看另一篇:http://www.cnblogs.com/Liyuting/p/6760706.html 二.匿名方法 三.扩展方法 原文地址:https://www.cnblogs.com/Liyuting/p/8485837.html

Func<>委托、扩展方法、yield、linq ForEach综合运用

1.先定义一个Model类    public class P1    {        public string name { get; set; }        public int age { get; set; }    }    2.定义一个扩展方法    作用:用于处理集合数据,通过传入一个委托来实现    注意,扩展方法必须定义在静态类中,而且方法本身也是静态的.    public static class ExtendMethod    {        public st

扩展方法、泛型、委托,的小案例

1.现有一个字符串集合,集合中存的是数字,把大于等于2的数值,打印出来,需要用到扩展方法.泛型.委托 class Projram{ static void Main(String[] args){ //定义一个集合, List<string> list = new List<string>{"1","3","5","6","7"}; //var okList = list.GetLi

聊聊C#IEnumerable&lt;T&gt;扩展方法里面的判断表达式中的&amp;与&amp;&amp;的区别?

背景 在工作过程中在使用框架的时候,遇到写Linq的判断条件的时候,我代码写成"t=>t.x.Equals(model.Id)&t.y.Equals(model.Name)"类似这种的形式.但是结果程序报错.然后我就写了下面的代码. 代码1 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 var persons = GetPersonList(); 6 var result = persons.Whe

23.C#Queryable的扩展方法(十二章12.1-12.2)

今天要写的知识还真心有点绕呢,对于第一节的内容,其实是把原先在内存中的数据源,换成了从数据库中提取出来的数据.从代码的使用方式上是一样的,直接跳过,来看看IEnumerable和IQueryable的区别. 正如Enumerable类型包含着关于IEnumerable<T>的扩展方法来实现LINQ标准查询操作符一样,Queryabl类型包含着关于IQueryable<T>的扩展方法.IEnumerable<T>和IQueryable<T>有两个重要的区别.