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 ...
随机推荐
- MyBatis3——输出参数ResultType、动语态sql
输出参数ResultType 1.输出参数为简单类型(8个基本+String) 2.输出参数为对象类型 3.输出参数为实体对象类型的集合:虽然输出类型为集合,但是resultType依然写集合的元素类 ...
- 【Flink】Flink作业调度流程分析
1. 概述 当向Flink集群提交用户作业时,从用户角度看,只需要作业处理逻辑正确,输出正确的结果即可:而不用关心作业何时被调度的,作业申请的资源又是如何被分配的以及作业何时会结束:但是了解作业在运行 ...
- 【实战】使用 Kettle 工具将 mysql 数据增量导入到 MongoDB 中
最近有一个将 mysql 数据导入到 MongoDB 中的需求,打算使用 Kettle 工具实现.本文章记录了数据导入从0到1的过程,最终实现了每秒钟快速导入约 1200 条数据.一起来看吧~ 一.K ...
- Java博客专栏
1. Java23种设计模式 2. JVM虚拟机 3. 设计模式6大原则 4. Java代码性能优化总结 5. 三种代理 6. iText操作PDF 7. 解析XML的4种方式 8. 面向对象思想 9 ...
- springboot中使用自定义注解实现策略模式,去除工厂模式的switch或ifelse,实现新增策略代码零修改
前言 思路与模拟业务 源码地址 https://gitee.com/houzheng1216/springboot 整体思路就是通过注解在策略类上指定约定好的type,项目启动之后将所有有注解的typ ...
- Android教程2020 - RecyclerView显示多种item
Android教程2020 - 系列总览 本文链接 前面我们已经用RecyclerView显示一些数据.也知道如何获取滑动的距离. 前面我们的列表中显示的都是同类数据.如果要在一个列表中显示不同类别的 ...
- (.text+0x18): undefined reference to `main'
在将VS中的程序移植到ubuntu中出现的一个问题,主要原因是在vs中默认的主函数写成int _tmain(), 而在gcc编译时要找的是int main().改过来就可以了.
- Maven: 把聚合工程下的项目导入 Ecplise
1.右键点击import 2.Import Existing Maven Projects 3.选择要导入的工程 4.完成
- CUDA学习(七)之使用CUDA内置API计时
问题:对于使用GPU计算时,都想知道kernel函数运行所耗费的时间,使用CUDA内置的API可以方便准确的获得kernel运行时间. 在CPU上,可以使用clock()函数和GetTickCount ...
- Kubernetes-Service资源详解
service的三种工作模式:(userstats(效率低).iptables.ipvs) service可以自动实现负载均衡.service自动实现了负载均衡,service通过selector标签 ...