服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

三个高级特性,将您的 C# 技能提升到新高度

日期: 来源:Linux公社收集编辑:聆听世界的鱼

点击上方蓝字 ● 关注Linux公社     

C# 就像约会一样,既令人沮丧又充满回报。在我作为一名 C# 开发人员的经历中,我被高水平的程序员所包围,他们推动我认识到在这个行业中取得成功需要付出多大的努力。
本文将介绍 3 个高级的、必须掌握的 C# 特性,这些特性将让您成为一个编程专家,并将您的面向对象编程和 C# 技能提升到新的高度。
1、LINQ(语言集成查询):简单来说,这是一组工具,可以方便地操作可枚举类型(例如 List、Dictionary 等)的数据。这个工具包括基于预设的 predicates/requirements 的方法来修改变量:
using System;using System.Collections.Generic;using Systems.Linq;
public class LinqMethodExample{ public static void Main(string[] args) { // 创建一个整数列表。 var listOfNumbers = new List<int> { 10, 5, 20, 15, 30, 25, 33, 66 }; // 执行各种LINQ方法。 var result = listOfNumbers .Where(num => num % 5== 0) // 得到可被5整除的数字。 .Select(num => (int)Math.Pow(num, 2)) // 将每个数字平方。 .Skip(1) // 跳过第一个元素。 .Last(num => num % 2 == 0) // 得到最后一个偶数。 Console.WriteLine($"{result}");
// 样例输出: // 900 }}
还有其他方法,比如:
  • OrderBy() -> 根据谓词按升序对序列进行排序。
  • GroupBy() -> 根据谓词对元素进行分组。
  • SelectMany() -> 扁平化嵌套列表(即从 List<List<int>> 提取 List<int>)。
  • Join() -> 根据谓词连接两个序列。
  • Zip() -> 将两个序列组合成元组的单个序列。
  • Distinct() -> 从序列中返回不同的元素。
这只是一个简单的示例,展示了 LINQ 方法的强大之处。这些方法的可扩展性和应用取决于您作为一名工程师的决策。在 LINQ 库中存在许多更多的方法。
2、异步编程: 这是一种简单的技术,允许程序在不阻塞主线程的情况下运行多个不同过程的任务。
与等待任务完成不同,异步任务允许其他任务同时继续执行。这有助于提高应用程序的响应性和性能,通常可以使用 async 或 await 关键字来实现。下面的代码以异步方式执行三个任务。也就是说,如果编译此代码,您将看到这三个任务将同时运行,并在不同的时间完成:
using System;using System.Threading.Tasks;
public class AsyncProgramming{ public static async Task RandomDelayAsync(int workId) { // 为此给定任务设置一个随机延迟值(1s-5s)。 var rand = new Random(); var delay = rand.Next(1000, 5000); await Task.Delay(delay);
// 打印消息,以便用户知道此任务何时完成。 Console.WriteLine($"Work {workId} completed in {delay}ms."); }
public static async Task Main() { // 创建一个由3个任务组成的数组以异步执行。 var tasks = new Task[3];
for (var idx=0; idx < tasks.Length; idx++) { tasks[idx] = RandomDelayAsync(idx); }
// 等待所有任务完成。 await Task.WhenAll(tasks); Console.WriteLine("All tasks completed.");
// 示例输出: // Work 2 completed in 1014ms. // Work 0 completed in 2329ms. // Work 1 completed in 4392ms. // All tasks completed. }}
3、委托和事件: 简单来说,这些工具提供了一种定义回调方法签名的方式,并提供了一种将事件处理程序附加/分离到事件的方式。
换句话说,委托就像你给别人的电话号码,事件就像通话后出现的语音邮件。当事件发生时,它是由电话号码通话引起的,代码会响应并做出相应的操作,比如触发一个语音邮件:
using System;
public class DelegateAndEventExample{ // 声明表示方法的委托类型 // 不接受任何参数并返回void。 public delegate void PhoneNumber();
public class Class { // 声明类型为PhoneNumber的事件。 public event PhoneNumber VoiceMail;
// 定义引发事件的方法。 public void CallPhoneNumber() { Console.WriteLine("Calling the phone number..."); MyEvent?.Invoke(); } }
public static void Main() { var instance = new MyClass();
// 使用lambda表达式将方法附加到语音邮件事件。 instance.VoiceMail += () => Console.WriteLine("Event handler called!");
// 调用CallPhoneNumber方法,该方法会引发语音邮件事件。 instance.CallPhoneNumber();
// 示例输出: // Calling the phone number... // Event handler called! }}
总之,掌握 LINQ、异步编程和委托/事件对于经验丰富的 C# 开发人员来说是必不可少的,他们的目标是提高编码技能。通过利用这些强大的功能,开发人员可以编写更高效、简洁和灵活的代码,轻松处理复杂操作。因此,如果您是一个 C# 专家或渴望成为一个专家,一定要将这些功能添加到您的工具箱中,并将您的编码水平提升到更高的水平。

感谢大家的阅读,祝大家度过美好的一天!

感谢 Linux迷 www.linuxmi.com 的精彩分享。
OK,这就是本文的内容。如果还有什么疑问,请在下面的评论区告诉我们。
需要 Linux 精美艺术壁纸的朋友请加小编微信linuxgs口令壁纸)。
来自:Linux迷
链接:https://www.linuxmi.com/c-sharp-prodigy.html
关注我们

长按或扫描下面二维码关注 Linux公社



关注 Linux公社,添加“ 星标 

每天 获取 技术干货,让我们一起成长

合作联系:root@linuxidc.net

相关阅读

  • 学术 | 彭中礼:法律论证中的数学方法

  • 法律论证中的数学方法作者:彭中礼,法学博士,法学博士后 ,中南大学法学院教授,湖南省法学会法学理论研究会会长。来源:原载《政法论坛》2017年第5期,全文转载自“政法论坛编辑部”微
  • 【学习】新能源高压绝缘检测标准流程

  • 点击蓝字,一键关注 走进《公共交通资讯》,及时掌握公交领域的行业政策、管理理论、科技信息、专家观点和先进经验... ...基于消费振兴立场的公共交通优先发展【学习】城市公交
  • 【安全】公交驾驶员应掌握的消防安全常识

  • 点击蓝字,一键关注 走进《公共交通资讯》,及时掌握公交领域的行业政策、管理理论、科技信息、专家观点和先进经验... ...基于大数据的公交营运数据分析公交企业安全生产管理提

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • “看云识天气”,气象谚语可信吗?

  • “朝霞不出门,晚霞行千里”“天上钩钩云,地上雨淋淋”……类似这样的气象类谚语你还知道哪些?气象谚语包含了古人的生活经验与智慧但这些谚语真的可信吗世界气象日@中央气象台
  • 36张图,一次性补全网络基础知识

  • ↓推荐关注↓转自:网络工程师笔记OSI和TCP/IP是很基础但又非常重要的知识,很多知识点都是以它们为基础去串联的,作为底层,掌握得越透彻,理解上层时会越顺畅。今天这篇网络基础科
  • 三个高级特性,将您的 C# 技能提升到新高度

  • 点击上方蓝字 ● 关注Linux公社 C# 就像约会一样,既令人沮丧又充满回报。在我作为一名 C# 开发人员的经历中,我被高水平的程序员所包围,他们推动我认识到在这个行业中取得
  • 利用TCP 打洞实现公网访问

  • 本文我们简单的说说利用Python进行Nat打洞,实现内网端口映射。无需公网IP,无需公网服务器。有手即可!克隆项目git clone https://github.com/MikeWang000000/Natter.git#检查网
  • 可悲的现实,大部分技术领导者可能并不称职

  • 作者|许晓斌 编辑|孙瑞瑞 本文由 InfoQ 整理自阿里巴巴资深工程师 许晓斌 在 QCon 全球软件开发大会(北京站)2022 上的演讲《技术领导力实战》。 大家好,我是许晓斌,目前就