匿名方法:通过匿名委托 、lamada表达式定义的函数具体操作并复制给委托类型;

匿名委托:委托的一种简单化声明方式通过delegate关键字声明;

内置泛型委托:系统已经内置的委托类型主要是不带返回值的Action<T1,,,,Tn>和带返回值的Func<T1,,,Tn,Tresult>

实例代码(运行环境netcoreapp3.1)

class demoFunc
{
/// <summary>
/// 定义函数单条语句直接用lamada表达式
/// </summary>
/// <param name="x"></param>
public void funcA( string x)=> Console.WriteLine("this is funcA!{0}",x);
/// <summary>
/// 使用内置泛型委托action(返回值为void) 定义委托类型成员变量,并通过那lamada定义匿名函数
/// </summary>
public Action<string> funcB= x => Console.WriteLine("this is funcB!{0}", x);
/// <summary>
/// 使用内置泛型委托action(返回值为void) 定义委托类型成员变量,
/// 并通过匿名委托定义匿名函数
/// </summary>
public Action<string> FuncB_1= delegate(string s)
{
Console.WriteLine("this is funcB_1!{0}", s);
};
/// <summary>
/// 定义委托类型
/// </summary>
/// <param name="s"></param>
public delegate void TFuccB_2(string s);
/// <summary>
/// 使用匿名函数声明委托
/// </summary>
public TFuccB_2 FuncB_2= delegate(string s) {
Console.WriteLine("this is funcB_2!{0}", s);
}; /// <summary>
/// 使用内置泛型委托func(返回值不可以为void,参数列表中最后一个时返回值),
/// 定义委托类型成员变量,并通过lamada定义单含带返回值的匿名函数
/// 单行表达式的返回值就是此匿名函数的返回值
/// </summary>
public Func<string, string> funcC=x=> string.Format("this is funcC!{0}", x); /// <summary>
/// 使用内置泛型委托func(返回值不可以为void),定义委托类型成员变量,
/// 并通过lamada定义多行代码的匿名函数
/// </summary>
public Func<string,string, string> funcD= (x1, x2) =>
{
Console.WriteLine("this is funcd!{0}{1}", x1, x2);
return string.Format("this is funcd!{0}{1}", x1, x2);
}; }

运行测试代码

static void Main(string[] args)
{
demoFunc demo=new demoFunc();
demo.funcA("a");
demo.funcB("b");
demo.FuncB_1("b");
demo.FuncB_2("b");
Console.WriteLine(demo.funcC("c"));
Console.WriteLine(demo.funcD("d1","d2")); Console.WriteLine("Hello World!");
}

运行结果

  1 "C:\Program Files\dotnet\dotnet.exe" C:/Users/edzjx/RiderProjects/testDemo/testDemo/bin/Debug/netcoreapp3.1/testDemo.dll
2 this is funcA!a
3 this is funcB!b
4 this is funcB_1!b
5 this is funcB_2!b
6 this is funcC!c
7 this is funcd!d1d2
8 this is funcd!d1d2
9 Hello World!
10
11 Process finished with exit code 0.
12

c# 匿名方法(函数) 匿名委托 内置泛型委托 lamada的更多相关文章

  1. 匿名方法、Lambda表达和自定义泛型委托以及Func、Action系统泛型委托

    1.匿名方法的概念:一个方法没有具体的名称,而只有关键字delegate.方法参数.方法体.这种方法是匿名方法. 匿名方法的好处:将具体方法和委托直接关联在一起,如果我们基于委托只需要一个方法的时候, ...

  2. C#内置泛型委托:Action委托

    1.什么是Action泛型委托 Action<T>是.NET Framework内置的泛型委托,可以使用Action<T>委托以参数形式传递方法,而不用显示声明自定义的委托.封 ...

  3. C#内置泛型委托:Func委托

    1.什么是Func委托 Func委托代表有返回类型的委托 2.Func委托定义 查看Func的定义: using System.Runtime.CompilerServices; namespace ...

  4. 生成器的send方法、递推函数、匿名函数及常用内置函数

    生成器的send方法 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值 什么是send方法? send方法相当于高级的next方法,send ...

  5. 委托+内置委托方法+多播委托+lambda表达式+事件

    委托概念:如果我们要把方法当做参数来传递的话,就要用到委托.简单来说委托是一个类型,这个类型可以赋值一个方法的引用. 声明委托: 在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字 ...

  6. C# 匿名委托、匿名方法、匿名对象、Lambda表达式

    一.匿名类型可通过使用 new 运算符和对象初始值创建匿名类型.示例:var v = new { Name = "Micro", Message = "Hello&quo ...

  7. JavaScript封装一个函数效果类似内置方法concat()

    JavaScript封装一个函数效果类似内置方法concat() 首先回忆concat()的作用: concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个 ...

  8. python 函数 装饰器 内置函数

    函数 装饰器 内置函数 一.命名空间和作用域 二.装饰器 1.无参数 2.函数有参数 3.函数动态参数 4.装饰器参数 三.内置函数 salaries={ 'egon':3000, 'alex':10 ...

  9. python函数知识六 内置函数二、匿名函数与内置函数三(重要)

    19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...

随机推荐

  1. 程序员你为什么这么累【三】:编码习惯之Controller规范

    作者:晓风轻本文转载自:https://zhuanlan.zhihu.com/p/28717374 第一篇文章中,我贴了2段代码,第一个是原生态的,第2段是我指定了接口定义规范,使用AOP技术之后最终 ...

  2. 小白学Java:I/O流

    目录 小白学Java:I/O流 基本分类 发展史 文件字符流 输出的基本结构 流中的异常处理 异常处理新方式 读取的基本结构 运用输入与输出 文件字节流 缓冲流 字符缓冲流 装饰设计模式 转换流(适配 ...

  3. from .cv2 import * ImportError: DLL load failed: 找不到指定的模块。 >>>

    from .cv2 import * ImportError: DLL load failed: 找不到指定的模块. >>> 昨天看项目的时候遇到这个问题,折腾到深夜,网上的各种方法 ...

  4. k8s概述

    k8s概述 概述 Kubernetes 使你在数以千计的电脑节点上运行软件时就像所有这些节点是单个大节点一样.它将底层基础设施抽象,这样做同时简化了应用的开发.部署, 以及对开发和运维团队的管理. K ...

  5. mysql--->mysql查看数据库操作记录

    mysql查看数据库操作记录 MySQL的查询日志记录了所有MySQL数据库请求的信息.无论这些请求是否得到了正确的执行.默认文件名为hostname.log.默认情况下MySQL查询日志是关闭的.生 ...

  6. Shiro身份验证及授权(二)

    一.Shiro 身份验证 身份验证的步骤: 收集用户身份 / 凭证,即如用户名 / 密码: 调用 Subject.login 进行登录,如果失败将得到相应的 AuthenticationExcepti ...

  7. maven jar 包问题

    1. Failure to transfer... 这种错误基本是所需要的 jar 包不存在,或者下载不完整,可去本地仓库查看相关 jar 文件的完整性 解决方案: 删除对应 jar 包,重新下载(删 ...

  8. 004-OSI参考模型和分层思想

    OSI参考模型 应用层 所有能产生网络流量的程序 表示层 在传输之前是否进行加密或者压缩处理 涉及安全问题 会话层 Session 是建立在传输层之上,利用传输层提供的服务,使应用建立和维持会话,并能 ...

  9. 基于Arduino开发的智能蓝牙小车

    基于Arduino的智能蓝牙小车 材料准备: Arduino开发板一块.四驱小车底板及相关配件一套.L298N驱动模块一个.HC-05/06蓝牙模块一块,九伏电源一块(用于主板供电).12V锂电池一块 ...

  10. 非常NB的一款快捷启动软件--Merry

    Merry 被设计为了能将日常重复性操作简化为一个快捷键或者命令.Merry 采用完全开放的体系, 可以使用 Lua 或者外部程序来扩展 Merry 的功能. 另附一个自己扩展的LUA脚本: --启动 ...