首页 > 编程语言 >C#新语法进阶委托泛型LinqLambda表达式

C#新语法进阶委托泛型LinqLambda表达式

时间:2022-10-28 15:00:18浏览次数:80  
标签:进阶 委托 C# 可以 特性 LinqLambda 类型 我们

学习C#开发的程序员们,相信大家也有自己的困惑。C#对于我们来说,一会很熟悉,一会很陌生,当你熟悉的时候,你阅读源码能一目十行,当你很陌生的时候,你十天能看懂一行代码。我们总是伴着梦,一路追寻,一路奔波。确时常忽略了,原来他也在成长。

C#(读作“See Sharp”)源于C语言系列,是一种新式编程语言,不仅面向对象,还类型安全, 开发人员可以利用 C# 能够生成在 .NET 中运行的多种安全可靠的应用程序,如果你想从事开发,那么C#绝对可以作为你的首选编程语言,为什么这么说,我们可以接着往下看。如果你已经走在从事编程的路上,也可以看看,或许有不一样的收获。如果你时常感受到曾经熟悉的代码而又变得那么的陌生,那么此时的您更需要这篇文章。

时代在发展,科技在进度,市场的需求每时每刻都在变化,为了解决或者满足市场的需求,作为编程开发的语言,也在不断的变化当中,这种变化,源于时代的需求,市场的需要。源源不断的注入新的语法。正式因为这样,你才会感受到他曾经那么的熟悉,而今天又那么的陌生。

我们先来看其中的一部分,也是工作中时常用到的几个点。

委托作为首先,我们知道委托从.NetFramework 1.0 到 4.7 ,以及到现在的.netcore 中都一直存在。由此可以看出他足够的重要。

“委托定义类型,类型指定特定方法签名“,晕了,这句话看不懂。那就不妨看下案例吧。

C#新语法进阶委托泛型LinqLambda表达式_c#

如果你还看不懂,也没关系,博文的最后,有详细的介绍。

其次是lambda表达式,我们知道在C#2.0之前就有委托了,在2.0之后又引入了匿名方法,

在 C#3.0 之后,又引入了 Lambda 表达式,他们三者之间的顺序是: 委托->匿名方法->Lambda 表达式,微软的一步步升级,带给我们编程上的优美,简洁,可读性强。

C#新语法进阶委托泛型LinqLambda表达式_.net_02

第三就是泛型,特别是在.netcore中应用更广泛,因为使用泛型类型可以最大限制的重用代码,保护类型安全性以及提高性能。 

C#新语法进阶委托泛型LinqLambda表达式_新特性_03

第四个就是linq,为什么要使用 linq,我们先来看一个问题。这个问题也是我们经常用到的。 需求就是:我们从一个整型类型的数组中,寻找偶数集合。

实现方式1:用原始的实现方式 foreach,肯定可以实现。

实现方式2:用委托来实现 用我们之前的委托方式也可以实现。

在 c# 3.0 中,引入了扩展方法,lambda 表达式,匿名类型等新特性,这些新特性是 linq 的前提。那么我们可以使用这些新特性来实现 上面的问题。Linq 可以用来查询不同类型的集合。并返回需要的结果。此实现方式3。

Linq 是 Language Integrated query 即 语言集成查询。

Linq 是一组语言特性和 API,使得你可以使用统一的方式编写各种查询。用于保存和检索来自不同数据源的数据。从而消除了编程语言和数据库之间的匹配。以及为不同类型的数据源提供单个查询接口。总之linq有着非常广泛的应用。

第五个就是反射,相信很多的程序员都听说过,无论你是java还是c#开发者。反射提供描述程序集、模块和类型的对象(​​Type​​ 类型)。 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后调用其方法或访问器字段和属性。 如果代码中使用了特性,可以利用反射来访问它们。

第六个就是特性,使用特性,可以有效地将元数据或声明性信息与代码(程序集、类型、方法、属性等)相关联。 将特性与程序实体相关联后,可以在运行时使用反射这项技术查询特性。

C#新语法进阶委托泛型LinqLambda表达式_新特性_04

C#新语法进阶委托泛型LinqLambda表达式_c#_05


C#新语法进阶委托泛型LinqLambda表达式_c#_06

总结:到目前为止呢,我们就总结了上述几个技术要点,也是工作中经常用到的。如果你对这些还不是很熟悉,不妨进一步学习一下。如果你对此有不一样的简介,欢迎热评,作为从事技术的人,相信大家都是热爱这个行业的,也希望您将这份爱心继续传递。

到今天从微软的官方文档来看c#已经更新到C#11了, 每一个版本中都增加了很多的新功能。如果有一天你没有学习,前辈们将这些新语法应用到了源码中,我们是不是又回到了那个曾经熟悉而又陌生的代码里。

为了筑梦,我们一路追寻,一路奔波。


​点击这里了解更多​


标签:进阶,委托,C#,可以,特性,LinqLambda,类型,我们
From: https://blog.51cto.com/u_13439389/5804897

相关文章

  • -XX:MaxDirectMemorySize
     1.关于MaxDirectMemorySize的设置https://www.jianshu.com/p/e1503204a059?u_atoken=95c81aa9-f78f-4fc2-b740-53ce5fef397f&u_asession=01Q8-suMVmBRarjM7BaZydEWIm......
  • Access to XMLHttpRequest at xxxx from origin xxx has been blocked by CORS poli
    错误:控制台报错; network自动发起了请求: 解决办法:找到\node_modules\sockjs-client\dist\sockjs.js 文件 然后crtl+g快捷键跳转到1603行,把他注释掉......
  • vs2015中搭建EF框架在代码生成策略中找不到“旧的ObjectContext
    vs2015中搭建EF框架在代码生成策略中找不到“旧的ObjectContext”生生不息0.o于2022-01-0617:28:10发布429收藏分类专栏:C#EF文章标签:c#软件框架版权C#同时被......
  • Spring mvc配置
    <!--自动扫描包,开启注解--><context:component-scanbase-package="com.wang.springmv.controller"/><!--annotation-driven配置的作用如下:1)、主要是......
  • TCP-三次握手
    1、三次握手的概念TCP三次握手是浏览器和服务器建立连接的方式,目的是为了使二者能够建立连接,便于后续的数据交互传输。第一次握手:浏览器向服务器发起建立连接的请求第二次......
  • .NET Core WebApi 多语言本地化,动态切换多语言
    .NETCoreWebApi多语言本地化,动态切换多语言原生的.netcorewebapi动态多语言本地话具体更多详细内容,可以参考官方文档首先看效果图整体项目结构图......
  • Jmeter固定吞吐量控制器Constant Throughput Timer
    控制请求的TPS,可以使用JMETER的固定吞吐量控制器ConstantThroughputTimerTargetthroughput(insamplesperminute):目标吞吐量(单位分钟),即每分钟执行多少次(TPM)Calcu......
  • GameObject 游戏物体
    游戏物体查找定义公共变量,将要查找的游戏物体拖入GameObject.Find("要查找的游戏物体名称");通过游戏物体名称查找GameObject.FindGameObjectWithTag("游戏物体的标签......
  • CF183D T-shirt
    本题的第一个转化很关键,也是这种期望题必须要观察到的一个性质,就是每种衣服的的贡献可以单独算。因为一个人喜欢一种衣服就不会喜欢另一种衣服,也就是说喜欢每一件衣服的概......
  • XCode Script脚本实现符号文件上传到bugly
    bugly解析错误信息需要符号文件,而符号文件每次都要手动去上传,有时候遗漏了,archive文件被删除后,想要解析出崩溃信息就很难了,所以,可以通过添加脚本,在archive完成的时候,自动上......