首页 > 编程语言 >C# 匿名方法

C# 匿名方法

时间:2023-03-07 13:36:36浏览次数:33  
标签:string C# System 匿名 MyDelegate using 方法

C# 匿名方法

 

C# 匿名方法是一个“内联”语句或表达式,可在需要委托类型的任何地方使用。 可以使用匿名函数来初始化命名委托,或传递命名委托作为方法参数。本文主要介绍C# 匿名方法。

 

1、C# 匿名方法的声明

可以使用 lambda 表达式或匿名方法来创建匿名函数。 建议使用 lambda 表达式,因为它们提供了更简洁和富有表现力的方式来编写内联代码。 与匿名方法不同,某些类型的 lambda 表达式可以转换为表达式树类型。匿名方法定义语法如下,

1)使用delegate 关键字创建委托实例来声明

delegate void MyDelegate(string s);
...
MyDelegate m = delegate(string x)
{
    Console.WriteLine("匿名方法: {0}", x);
};

2)使用 lambda 表达式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace cjavapy
{
    delegate void MyDelegate(string s);
    class Program
    {
        static void Main(string[] args)
        {
            //Expression<del> myET = x => x * x;
            MyDelegate m =  x=>Console.WriteLine("匿名方法: {0}", x);
            Console.ReadKey();
        }
    }
}

 

2、匿名方法的使用

在 C# 1.0 中,通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例。 C# 2.0 引入了匿名方法的概念,作为一种编写可在委托调用中执行的未命名内联语句块的方式。 C# 3.0 引入了 lambda 表达式,这种表达式与匿名方法的概念类似,但更具表现力并且更简练。 这两个功能统称为匿名函数。 通常,面向 .NET Framework 3.5 或更高版本的应用程序应使用 lambda 表达式。

例如,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace cjavapy
{
    class Test
    {
        delegate void MyDelegate(string s);
        static void MyMethod(string s)
        {
            Console.WriteLine(s);
        }
        static void Main(string[] args)
        {
            //原始委托语法
            //使用指定方法初始化。
            MyDelegate md1 = new MyDelegate(MyMethod);
            // c# 2.0:一个委托可以被初始化
            //内部代码,称为“匿名方法”。这
            //方法以字符串作为输入参数。
            MyDelegate md2 = delegate (string s) { Console.WriteLine(s); };
            // c# 3.0。委托可以被初始化
            //一个lambda表达式lambda也接受一个字符串
            //作为输入参数(x)。x的类型由编译器推断。
            MyDelegate md3 = (x) => { Console.WriteLine(x); };
            // 调用委托。
            md1("C#");
            md2("Java");
            md3("Python");
            Console.ReadKey();
        }
    }
}

 

标签:string,C#,System,匿名,MyDelegate,using,方法
From: https://www.cnblogs.com/GaoUpUp/p/17187798.html

相关文章

  • C# 多线程(Thread和Task)
    C#多线程(Thread和Task)线程(Thread)是进程中的基本执行单元,是操作系统分配CPU时间的基本单位,一个进程可以包含若干个线程,在进程入口执行的第一个线程被视为这个进......
  • CF955C Sad powers
    CF955CSadpowersLuoguCF955C题面翻译给你\(q\)个询问,每次询问\([l,r]\)这个区间内满足\(x=a^p(a>0,p>1)\)的\(x\)的数量。数据范围:\(1\leqslantq\leqsla......
  • C# 异步编程(async和await)
    C#异步编程(async和await)在C#中,如果需要I/O绑定(例如从网络请求数据、访问数据库或读取和写入到文件系统),则需要利用异步编程。还可以使用CPU绑定代码(例如执......
  • 【备战面试】JavaScript 进阶问题列表
    在原博主Instagram上每天都会发布JavaScript的多选问题,并且同时也会在这个仓库中发布。从基础到进阶,测试你有多了解JavaScript,刷新你的知识,或者帮助你的coding面试!......
  • electron限制只启动一个应用
    主要代码constgotTheLock=app.requestSingleInstanceLock()if(!gotTheLock){app.quit()}else{app.on('second-instance',(event,commandLine,workingD......
  • windows server 安装AppScan
    一、AppScan下载下载链接:https://pan.baidu.com/s/1csUWPiVkwBNhcUES3XzNqQ?pwd=9xdh  二、AppScan安装(1)双击“AppScan_Setup_10.0.0.exe”开始安装   ......
  • Marddown 使用VSCode预览 不显示图片 文件路径正确
    今天用Markdown写总结,图片变成了这样:文件路径是这个:C:\Users\dell\Desktop\A_Folder\#笔记开始以为是路径里有中文的原因,改成了全英文,但还是不显示。于是把"#"也删......
  • CRC 基础介绍
    CRC的用途CRC(CyclicRedundancyCheck)校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称......
  • C# lambda 表达式
    C#lambda表达式lambda函数是一个小的匿名函数。lambda函数可以接受任意数量的参数,但只能具有一个表达式。本文主要介绍C#lambda表达式。 1、C#lambda表......
  • C# 正则表达式(Regex)
    C#正则表达式(Regex) 正则表达式是形成搜索模式的一系列字符。正则表达式可用于检查字符串是否包含指定的搜索模式。也可以进行字符串的替换和提取。本文主要......