有限公司网站入口,企业做网站电话约见客户的对话,网站建设都有什么类型,wordpress和discuz双向同步文章目录匿名方法Lambda表达式实例实例博主写作不容易#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行
C#中的匿名方法是在C#2.0引入的#xff0c;它终结了声明委托的唯一方法是使用命名方法的时代。在C#更高版本中#xff0c;Lambda表达式取代了匿名方法孩子需要您鼓励 万水千山总是情 , 先点个赞行不行
C#中的匿名方法是在C#2.0引入的它终结了声明委托的唯一方法是使用命名方法的时代。在C#更高版本中Lambda表达式取代了匿名方法作为编写内联代码的首选方式。但是匿名方法的信息同样也适用Lambda表达式可以说Lambda表达式就是匿名方法演变过来的。匿名方法可以用来忽略参数列表可以转化为具有各种签名的委托而这对于Lambda表达式来说是不可能的。
匿名方法
要将代码块传递为委托参数创建匿名方法则是唯一的方法。匿名方法就是为了将代码块传递为委托参数因此也有人将其称为匿名委托。使用C#匿名方法可以使委托及事件的代码编写更加精简、高效。一般情况下事件注册事件处理方法需要首先定义这个方法如果该方法仅用于订阅特定的事件则可使用代码更加简明的匿名方法。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace test
{class Program{static void Main(string[] args){Heater heater new Heater();heater.BoilEvent delegate(int param){Console.WriteLine(Alarm:dididid,水已经{0}℃了, param);};heater.BoilEvent delegate(int param){Console.WriteLine(Display:水快开了当前温度为{0}℃, param);};heater.BoilWater();Console.ReadKey();}}public class Heater{private int temperature;//水温public delegate void BoilHandle(int x);//声明关于事件的委托public event BoilHandle BoilEvent;//声明水要烧开的事件public void BoilWater(){ //烧水的方法for (int i 0; i 100; i){temperature i;if (temperature 96){if (BoilEvent ! null){BoilEvent(temperature);}}}}}}运行结果
Lambda表达式
Lambda表达式是一种可用于创建委托或表达式目录树类型的匿名函数。通过使用lambda表达式可以写入可作为参数传递或作为参数传递或作为函数调用值返回的本地函数。Lambda表达式对于编写LINQ查询表达式特别有用。若要创建Lambda表达式需要在Lambda运算符左侧指定输入参数然后在另一侧输入表达式或语句块。
实例
lambda表达式xx*x指定名为x的参数并返回x的平方值。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;namespace test
{class Program{static void Main(string[] args){Expressiondel myET x x * x;Console.ReadKey();}}
}委托签名具有一个int类型的隐式类型输入参数并返回int。可以将lambda表达式转换为该类型的委托因为该表达式也具有一个输入参数x以及一个编译器可隐式转换为int型的返回值。 表达式位于运算符右侧的lambda表达式称为lambda表达式。表达式lambda广泛用于C#的表达式树的构造。表达式lambda会返回表达式的结果。
实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;namespace test
{class Program{public delegate bool ShortDelegate(int[] x);static void Main(string[] args){int[] arr new int[] { 8, 4, 5, 6, 2, 1, 3, 7, 9, 0 };Console.WriteLine(未排序前数组序列为);foreach (int i in arr){Console.Write({0},, i);}ShortDelegate MyDelegate array {for (int i array.GetUpperBound(0); i 0; i--)//循环从后向前分别取出数组中的一个元素{//冒泡排序将数值小的元素移到后面直到所有的元素按照降序排列for (int j 0; j i; j){if (array[j] array[i]){//交换两个元素位置int z array[j];array[j] array[i];array[i] z;}}}return true;};MyDelegate(arr);//调用委托排序Console.WriteLine(\n排序后数组序列为);foreach (int i in arr){Console.Write({0},, i);}Console.ReadKey();}}}运行结果
------------------------------------------------------------------------------------------分割线
------------------------------------------------------------------------------------------博主简介工业自动化上位机软件工程师、机器视觉算法工程师、运动控制算法工程师。目前从业于智能制造自动化行业。 博主邮箱2296776525qq.com 帮忙点个赞吧。哈哈。