.net基础扫盲-小例子串委托、匿名方法、lambda表达式

C++异步编程实战:手写生产者-消费者任务队列提升程序响应能力 异步编程是现代软件开发中提升程序响应能力和吞吐量的核心技术,其核心原理在于将耗时操作从主线程分离,通过后台执行避免界面冻结。在C++中,虽然标准库提供了std::async和std::future等原生支持,但深入理解其底层机制对于构建高性能应用至关重要。通过实现一个基于生产者-消费者模型的异步任务队列,开发者可以掌握线程管理、锁同步和条件变量等并发编程基础,这种模式广泛应用于网络服务器、GUI应用和数据处理等场景。本文以C++11/14标准线程库为基础,从零构建一个轻量级任务队列,帮助读者理解异步编程的底 阅读详情

我把委托理解为:委托是一种方法的格式,当然他也是一种类型。

只要是方法的格式跟委托定义的格式是一样的,那么就可以把该方法附加给该委托。看以下demo

 

声明委托:

<p style="margin:0in;font-family:微软雅黑;font-size:12.0pt"></p><pre name="code" class="csharp">public delegate void Add(int a,int b );


声明一个格式相同的方法:

        static void OtherMethod(int a ,int b)
        {
            Console.WriteLine(a+b);
        }

给类声明一个委托类型的成员变量

public class Person
    {
        public string Name { set; get; }
        public string Age { set; get; }
        public Add MyAdd ;
    }

将方法附加给委托,调用,测试如下:

static voidMain(string[] args)
{
    Person p1 =new Person ();
    p1.MyAdd = OtherMethod;
    p1.MyAdd(7, 8);
 
    Console.ReadLine();
}

控制台输出—— 15

 

如果我们定义的OtherMethod不常用,就没有必要单独声明一个方法。可以用匿名方法,即:在给委托附加方法的时候,直接构造一个跟委托格式相同的匿名方法就可以了:

写法如下:

p1.MyAdd = delegate(inta, int b) { Console.WriteLine(a + b); };

匿名方法,顾名思义,没有方法名,只有方法参数和方法的算法,可真是够简单了。


同样我们也可以直接用lamuda表达式,直接构造一个方法,如下:

 p1.MyAdd = (int a, int b) => {Console.WriteLine(a + b); };

匿名方法和拉姆达表达式的出现,使得写方法变得更加简便了。



VB.NET中匿名类型的可变性与不可变性之间的区别 在VB.NET中,匿名类型是一种临时创建的类型,用于存储一组相关的属性值。在使用匿名类型时,有时我们需要了解它们的可变性和不可变性之间的区别。总结起来,可变的匿名类型允许我们直接修改其属性值,而不可变的匿名类型则要求我们创建一个新的匿名类型对象来代替原始对象,以实现属性值的更改。需要注意的是,无论是可变的还是不可变的匿名类型,在创建后都不能进行结构上的更改。在VB.NET中,匿名类型可以是可变的或不可变的,这取决于我们对其属性值的修改能力。对象的属性值,而是创建了一个新的匿名类型对象并将其赋值给。 阅读详情

相关推荐

C#和Vb 的多播委托 事件

C#的多重委托和vb的多重委托 逻辑上是一样的,不过 写法还是有点不同的

注入式开发(二):.NET 匿名函数

其实匿名函数就是个委托。只不过写起来更简洁。 为啥要用匿名函数呢?只是为了装逼吗? 诺诺诺 比如说,我们写代码,写着写着,发现有2个函数非常相像: string methodA(string data) { 相同代码1。。。 methodA特有部分 相同代码2。。。 } string methodB(string data) { 相同...

weixin_34161032的博客 230

薄膜比拟、开口截面扭转承载力以及风电混塔水平缝张开状态下抗扭承载力推导

风电混塔水平缝张开状态下的抗扭承载力推导,从弹性力学说起

George的博客 873

.NET的委托和匿名函数应用一例

闲话休提,大家都是成年人,直接上代码。有代码有J8: delegate string dlgGetTotal(); void TongJi() { dlgGetTotal getTotalInt = () => {//统计整数 int d = 0; foreach (KeyValuePair<string, string> kvp in di...

weixin_34081595的博客 176

无人驾驶汽车系统入门(三十二)——FEC算法:点云快速欧几里得聚类实战解析

本文深入解析了FEC算法在无人驾驶点云聚类中的高效应用,通过逐点处理策略和体素栅格预分割技术,实现了比传统欧几里得聚类快百倍的速度。文章详细介绍了算法原理、Python实现及参数调优指南,并对比了FEC与传统算法的性能差异,为无人驾驶系统开发提供了实用解决方案。

weixin_29065015的博客 485

【ArcGIS】ArcMap中北京1954坐标系转WGS84的实战技巧与参数选择

本文详细解析了在ArcMap中将北京1954坐标系数据转换为WGS84坐标系的完整流程与核心技巧。针对常见的坐标偏移问题,文章首先强调了数据“归位”的重要性,并提供了处理假东、假北值的具体操作步骤。随后,重点阐述了地理变换参数(如Beijing_1954_To_WGS_1984_2)的选择逻辑及其对转换精度的决定性影响,并结合案例说明了参数选择、中央经线确认及结果验证等关键环节,旨在帮助用户高效、准确地完成坐标转换。

f6g7h8i9j的博客 330

vb.net 通过linq 及匿名函数完成对数组的遍历匹配有C#的字符串

''' <summary> ''' 寻找数组中有C#的元素 ''' </summary> Sub Sub2() Dim strLists As String() = New String() {"文道科技", "C#编程词典", "C#编程词典珍藏版"} Dim strList As String() = Array.FindAll(strLists, Function(s) (s.IndexOf("C#") >...

laocooon的博客 704

Silvaco光电探测学习笔记(一)——有关响应和暗电流

习惯用md记笔记,索性发出来,一是为了在线同步,二是希望能帮到需要的人。

qq_41584406的博客 8012

(T x) => y 匿名函数(lambda 表达式)

C# 编程指南匿名函数(C# 编程指南)<!-- Content type: Devdiv1. Transform: orcas2mtps.xslt. --> 更新:2007 年 11 月如其他地方所述,委托是一种包装方法调用的类型。就像类型一样,可以在方法之间传递委托实例,并且可以像方法一样调用委托实例。匿名函数是一个“内联”语句或表达式,

leelong80的专栏 682

IC618新手避坑指南:从零在Linux上配置Cadence Virtuoso环境(含cds.lib文件详解)

本文详细介绍了在Linux系统上配置Cadence Virtuoso IC618环境的完整指南,特别针对新手常见问题提供解决方案。重点解析了cds.lib文件的关键配置,包括库路径定义和工艺库管理,并分享了高效工作流设置和典型问题排查技巧,帮助工程师快速搭建稳定的EDA设计环境。

weixin_26805597的博客 553

锁的艺术:Java并发中的常用锁策略与实践

对java锁相关内容进行整理分析:乐观锁 VS 悲观锁+自旋锁 VS 适应性自旋锁+无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁+公平锁 VS 非公平锁+可重入锁 VS 非可重入锁+独享锁 VS 共享锁

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 171万+

Entity Framework全面扫盲

目录 基础知识 LINQ技术 Entity Framwork 介绍 基础知识 LINQ技术 LINQ的基础-C#3.0    自动属性    隐式类型    对象集合初始化器    匿名类    扩展方法    Lambda表达式 自动属性 其实就是一个语法糖,自动执行getter,setter。常用写法 publicstringHalloWorld...

花行远的码园 265

【AI Agent】Hermes Agent解析

Hermes Agent:一个具备持久化学习能力的开源AI Agent框架 核心特点: 突破传统Agent的"无状态困境",通过记忆系统(SQLite+FTS5全文检索)实现跨会话经验积累 支持200+模型自由切换,11种模型家族和15+平台接入 五层架构设计(入口层、编排层、推理层、工具执行层、存储层)实现平台无关性 47+内置工具和动态技能沉淀机制,支持从任务执行中自动提炼可复用Skill 独特的四层记忆体系(会话/每日/长期/向量索引)和辩证式用户建模 与传统Agent对比: 具备自我进化能力,通过A

sysu_lluozh 934

扫盲Linq知识

LINQ,语言集成查询(Language Integrated Query),是在.NET Framework 3.5 中出现的技术。 借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据。从技术角度而言,LINQ定义了大约40个查询操作符,如from, select, in, where, group by, orderby, … 使用这些操作符可以编写查询语...

ddkyij9397的博客 155

通信原理 | 随机数仿真 | 均匀、正态、双高斯、瑞利、莱斯、对数正态、nakagami、Suzuki分布的随机数仿真(matlab)

信道建模在通信系统设计和分析中扮演着至关重要的角色。它指的是使用数学和物理模型来描述和模拟无线或有线通信路径中的信号传播特性。

若北辰 1985

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

DotNet进阶系列

转载博客地址 : http://www.cnblogs.com/yaopengfei/ 一. 回顾历史    回顾个人发展历程,自2012年初次接触开发至今(2018年)已经有六个年头,这期间陆陆续续学习并掌握了不少技术,C#语言、ORM框架、多线程技术、设计模式、前端技术、MVC、MVVM框架思想等等,每种技术随着多次使用,随着不断的反思,逐渐经历 “了解→理解→掌握→精通 ...

Jimma1982 179

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【VB.NET】Lambda 表达式

Lambda 表达式是 VB.NET 中强大的功能,它:简化了代码,特别是与 LINQ 一起使用时支持函数式编程风格提高了代码的可读性和简洁性通过闭包可以访问定义范围的变量掌握 Lambda 表达式可以显著提高你的 VB.NET 编程效率,特别是在处理集合、事件和异步编程时。

weixin_43910833的博客 391

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VB.NET的lambda运算符和C#的lambda运算符=>之比较

VB.NET也是有运算符的,不过不是=&amp;gt;,而是用Function()代替的。比如求一个字符串数组中最短字符串的长度,代码如下: Dim words As String() = {&quot;cherry&quot;, &quot;apple&quot;, &quot;blueberry&quot;} Dim shortestWordLength As Integer = words.Min(Function(mm) mm.Length

itleon的博客 3670

vb.net lambda语法特点

vb.net lambda语法特点: lambda 表达式没有名称。 Lambda 表达式不能有修饰符,例如 Overloads 或Overrides。 Lambda 表达式不使用 As 子句来指定函数的返回类型。相反,类型是从 lambda 表达式主体

wl58796351的专栏 4660

Lambda 表达式 (Visual Basic)

Dim increment1 = Function(x) x + 1 Dim increment2 = Function(x) Return x + 2 End Function ' Write the value 2. Console.WriteLine(increment1(1)) ' Write the valu...

博客标题: 750
上一篇: .net基础扫盲-params
下一篇: .net基础扫盲-自定义泛型类
chenjinge7
博客等级 码龄15年 64粉丝 67原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值