c#委托的简单学习
发布日期:2021-05-07 00:06:35 浏览次数:20 分类:技术文章

本文共 1916 字,大约阅读时间需要 6 分钟。

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{    class Program    {        //普通委托        delegate void weituo();        //带参数的委托        delegate void weituo1(string str);        //带参数带返回值的委托        delegate bool weituo2(string str);        //带两个参数带返回值的委托        delegate bool weituo3(string str,string strr);        //自定义泛型委托        delegate fan my
(fan f); //一个普通函数 public static void W() { Console.WriteLine("1.最初的委托,传入函数"); } static void Main(string[] args) { //1.原版委托 weituo w = new weituo(W); w(); //2.匿名方法 weituo n = delegate() { Console.WriteLine("2.匿名方法,不需要传入函数"); }; n(); //3.兰姆达表达式 weituo l = () => { Console.WriteLine("3.兰姆达表达式,更便捷"); }; l(); //4.兰姆达 Lambda 带参数 参数名字比较自由 无需和上面定义的str相同 weituo1 l1 = s => Console.WriteLine(s); l1("4.带参数的兰姆达"); //5.兰姆达 Lambda 带参数 带返回值 weituo2 l2 = s => s.Length == 0; //简便写法 直接返回 只能写一行 //weituo2 l2 = (s) => s.Length == 0; //传递参数可以带小括号 不带也可以 //weituo2 l2 = (s) => { return s.Length == 0; }; //可以写多行 不带小括号也可以 Console.WriteLine("5."+l2("")); //6.带两个参数 weituo3 l3 = (s, s1) => s.Equals(s1); //weituo3 l3 = s,s1 => s.Equals(s1); //带两个参数不加小括号报错 Console.WriteLine("6." + l3("","asd")); //7.泛型委托 func 必须有返回值 action必须无返回值 Predicate默认返回值为bool Func
f = s => s; Predicate
p = s => s > 0; Action
a = b => Console.WriteLine("7."+b); a(p(f(1))); //8.自定义泛型委托 my
m = x => x; Console.WriteLine("8."+m(8)); //以下省略一万个字 } }}
上一篇:c#Invoke和BeginInvoke的区别
下一篇:c# GDI绘制简单的艺术字

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年03月11日 11时32分55秒