c# 匿名方法(函数) 匿名委托 内置泛型委托 lamada
匿名方法:通过匿名委托 、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的更多相关文章
- 匿名方法、Lambda表达和自定义泛型委托以及Func、Action系统泛型委托
1.匿名方法的概念:一个方法没有具体的名称,而只有关键字delegate.方法参数.方法体.这种方法是匿名方法. 匿名方法的好处:将具体方法和委托直接关联在一起,如果我们基于委托只需要一个方法的时候, ...
- C#内置泛型委托:Action委托
1.什么是Action泛型委托 Action<T>是.NET Framework内置的泛型委托,可以使用Action<T>委托以参数形式传递方法,而不用显示声明自定义的委托.封 ...
- C#内置泛型委托:Func委托
1.什么是Func委托 Func委托代表有返回类型的委托 2.Func委托定义 查看Func的定义: using System.Runtime.CompilerServices; namespace ...
- 生成器的send方法、递推函数、匿名函数及常用内置函数
生成器的send方法 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值 什么是send方法? send方法相当于高级的next方法,send ...
- 委托+内置委托方法+多播委托+lambda表达式+事件
委托概念:如果我们要把方法当做参数来传递的话,就要用到委托.简单来说委托是一个类型,这个类型可以赋值一个方法的引用. 声明委托: 在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字 ...
- C# 匿名委托、匿名方法、匿名对象、Lambda表达式
一.匿名类型可通过使用 new 运算符和对象初始值创建匿名类型.示例:var v = new { Name = "Micro", Message = "Hello&quo ...
- JavaScript封装一个函数效果类似内置方法concat()
JavaScript封装一个函数效果类似内置方法concat() 首先回忆concat()的作用: concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个 ...
- python 函数 装饰器 内置函数
函数 装饰器 内置函数 一.命名空间和作用域 二.装饰器 1.无参数 2.函数有参数 3.函数动态参数 4.装饰器参数 三.内置函数 salaries={ 'egon':3000, 'alex':10 ...
- python函数知识六 内置函数二、匿名函数与内置函数三(重要)
19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...
随机推荐
- 关于SOA架构设计的案例分析
关于SOA架构设计的案例分析 面向服务的体系结构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.它可以根据需求通过网络对松散耦合的粗粒度应 ...
- 【java基础】String、StringBuilder和StringBuffer的区别
关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下 1.三者在执行速度方面的比较:StringBuilder > String ...
- 用tensorflow的Eager执行模式
一.即时执行模式 import tensorflow as tfimport tensorflow.contrib.eager as tfetfe.enable_eager_execution() a ...
- 说实话 NuGet Package Manager 网速不是一般的慢
- 谈谈模型融合之三 —— GBDT
前言 本来应该是年后就要写的一篇博客,因为考完试后忙了一段时间课设和实验,然后回家后又在摸鱼,就一直没开动.趁着这段时间只能呆在家里来把这些博客补上.在之前的文章中介绍了 Random Forest ...
- Spring 框架初学
一 . spring IOC, DI: 将原来有程序员建立类的对象工作交由spring来操作: 从外部来看: 将各个类以bean 的方式配在spring容器的配置文件中(application.x ...
- 双括号(()),shell与C++的桥梁
使用语法: ((表达式))用来扩展Shell中的算术运算,以及赋值运算,扩展for,while,if条件测试运算. 注意点: 1.在双括号结构中,所有的表达式可以像c语言一样,如a++,b-- 2.在 ...
- sharding-JDBC学习笔记
sharding-JDBC学习笔记 ShardingSphere ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sharding-Pr ...
- Docker快速上手之部署SpringBoot项目
Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期 ...
- Docker应用部署实录(包含完善Docker安装步骤)
Docker应用部署实录(包含完善Docker安装步骤) 前言 首先说一下这篇文章的来源.我之前接手的一个IOT项目,需要安装多个中控服务器.中控服务器需要安装RabbitMQ,Mysql,多个服务, ...