c# 匿名方法(函数) 匿名委托 内置泛型委托 lamada

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

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

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

实例代码

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 

原文地址:https://www.cnblogs.com/edzjx/p/12247950.html

时间: 2024-10-30 16:12:01

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

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

1.什么是Func委托 Func委托代表有返回类型的委托 2.Func委托定义 查看Func的定义: using System.Runtime.CompilerServices; namespace System { // // 摘要: // 封装一个方法,该方法具有两个参数,并返回由 TResult 参数指定的类型的值. // // 参数: // arg1: // 此委托封装的方法的第一个参数. // // arg2: // 此委托封装的方法的第二个参数. // // 类型参数: // T1:

个人总结:匿名委托+内置委托+Lambda表达式

匿名委托+内置委托+Lambda表达式 概要 在实际开发中,项目开发框架不同,用到的技术是不一样的,这里总结一下用Linq开发,ORM之EF开发会大量使用的Lambda表达式; 正文 之前提过.Net有一套扩展在IEumberable<T>泛型接口的扩展方法,本文是从这个基础继续总结; 1.void Action<in T>: 先拿一个ForEach()来讲: public void ForEach(Action<T> action); 这个Action<T>

day05 协程函数,递归函数,匿名函数lambda,内置函数map reduce filter max min zip sorted,匿名函数lambda和内置函数结合使用,面向过程编程与函数编程,模块与包的使用,re模块内置函数

基础篇 本章大纲: 协程函数 递归函数 匿名函数lambda 内置函数map reduce filter  max min zip sorted 匿名函数lambda和内置函数结合使用 面向过程编程与函数编程 模块与包的使用 re模块内置函数 一,协程函数 注意:函数先定义,后使用.这是函数第一原则.函数主要分为定义,调用 1.1,什么是协程函数 协程函数特点:yield变为表达式,可以通过g.send(value)传值,用send传值时协程函数需要初始化,也可以说是生成器函数的一种 1.2,协

函数中,内置参数与jQuery方法参数(也可以说是对象键值对)

1.一个匿名函数中的参数,是不可以传递给jQuery方法中的参数. 如: 1 var someFn = function(key,value){ 2 $('selector').css({ 3 key:value 4 }) 5 } 2.一个变量不可改变一个键值对中的key. 如: 1 var a; 2 $('selecor').css({ 3 a:value 4 }) 总结: 匿名函数中的内置参数 key  是传递不到  jQuery 方法css() 中的 key 参数 : value 则可以.

委托+内置委托方法

委托概念:如果我们要把方法当做参数来传递的话,就要用到委托.简单来说委托是一个类型,这个类型可以赋值一个方法的引用. 声明委托: 在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字段和方法组成的,然后使用这个类实例化对象.在我们使用委托的时候,也需要经过这两个阶段,首先定义委托,告诉编译器我们这个委托可以指向哪些类型的方法,然后,创建该委托的实例. 定义委托的语法如下: delegate void IntMethodInvoker(int x); 定义了一个委托叫做IntMe

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

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

python函数七(内置函数)

一.内置函数 1.重要内置函数 都是带key的: max min map filter 返回的是迭代器 sorted 返回的是列表 函数名在后 1.1 max dic = {'k1':20,'k2':30,'k3':100} def func(x): return dic[x] l1 = max(dic,key=func,) #(输出的是dic默认就是输出dic的键),函数返回的是是value值,即选出最大的value对应的键 print(l1) #k3 dic = {3:20,2:30,1:1

JavaScript封闭函数、常用内置对象、js调试方法

1.封闭函数 封闭函数是JavaScript中匿名函数的另外一种写法,创建一个一开始就执行而不用命名的函数 /在封闭函数前加';',可以避免js压缩时出错/;(function(){ alert('hello world!'); })(); /*当i大于78时等于78,小于时等于89*/ var i = 90>78?78:89; alert(i); /*第二个写法*/ !function(){ alert('hello world!'); }(); /*第三个写法*/ ~function(){

委托-异步调用-泛型委托-匿名方法-Lambda表达式-事件

1. 委托 From: http://www.cnblogs.com/daxnet/archive/2008/11/08/1687014.html 类是对象的抽象,而委托则可以看成是函数的抽象.一个委托代表了具有相同参数列表和返回值的所有函数. [csharp] view plaincopy class Program { delegate int CalculateDelegate(int a, int b); int add(int a, int b) { return a + b; } s