当前位置: 首页 > news >正文

C# 的一些好用的语法糖介绍

C# 中有很多语法糖(Syntactic sugar),它们是一些语言特性,使得编写代码更加简洁、易读、更具表现力。

Lambda 表达式:
Lambda 表达式允许你编写简洁的匿名函数。例如:

Func<int, int, int> add = (a, b) => a + b;

自动属性:
简化了属性的定义。编译器会自动创建私有字段并生成 getter 和 setter 方法。

public int Age { get; set; }

集合初始化器:
允许你初始化集合类型,使得代码更加清晰。

var list = new List<int> { 1, 2, 3 };

空值合并运算符:
简化了处理可能为 null 的情况。

string name = null;
string result = name ?? "default";

字符串插值:
允许在字符串中直接插入表达式,更加方便地构建字符串。

string name = "John";
string message = $"Hello, {name}!";

模式匹配:
可以方便地检查对象的类型和属性。

if (obj is MyClass myObj)
{// 使用 myObj
}

foreach 循环:
简化了遍历集合的过程。

foreach (var item in collection)
{// 处理 item
}

using 语句:
确保资源在使用完后被释放,使得代码更加健壮。

using (var stream = new FileStream("file.txt", FileMode.Open))
{// 使用 stream
}

扩展方法:
允许你在不修改原始类的情况下向现有类添加方法。

public static class StringExtensions
{public static bool IsNullOrEmpty(this string str){return string.IsNullOrEmpty(str);}
}// 使用扩展方法
bool result = "test".IsNullOrEmpty();

命名参数:
可以在调用方法时指定参数的名称,增加了可读性。

PrintName(firstName: "John", lastName: "Doe");static void PrintName(string firstName, string lastName)
{Console.WriteLine($"{firstName} {lastName}");
}

可空值类型:
允许基本数据类型表示为可空的,用于表示可能为 null 的值。

int? nullableInt = null;

委托:
委托是一种类型,用于引用方法。它们提供了更灵活的事件处理和回调机制。

delegate int Operation(int x, int y);

不可变性:
使用 readonly 和 const 关键字可以创建不可变字段和常量。

readonly int readOnlyValue = 10;
const int constantValue = 5;

模式匹配:
允许在 switch 语句中使用模式来匹配值。

switch (obj)
{case MyClass myObj:// 使用 myObjbreak;case null:// 处理 nullbreak;
}

属性表达式:
允许你在编译时动态地访问属性和方法。

string propertyName = nameof(MyClass.MyProperty);

相关文章:

  • 前端面试练习24.3.7
  • 2024年FPGA可以进吗
  • 学习JAVA的第十五天(基础)
  • 数组元组列表之间的相互转化
  • 揭秘大型集团背后的数据管理方法:如何掌控数据洪流,引领行业新潮流?
  • iOS开发进阶(八):ipa应用唤起并跳转至指定页面
  • 【三】【SQL Server】如何运用SQL Server中查询设计器通关数据库期末查询大题
  • 如何学习、上手点云算法(三):用VsCode、Visual Studio来debug基于PCL、Open3D的代码
  • 抖音详情API:音频和图片资源的管理与使用
  • 数据结构:顺序表的奥秘
  • pgrouting学习记录
  • 【图像拼接/视频拼接】论文精读:Efficient Video Stitching Based on Fast Structure Deformation
  • 8套成熟在用的三级医院信息化系统源码,HIS、LIS、PACS、智慧导诊、线上预约挂号支付系统源码
  • mongo基本使用
  • 已解决ResponseEntityException的Spring MVC异常响应实体异常的正确解决方法,亲测有效!!!
  • 07.Android之多媒体问题
  • 11111111
  • ComponentOne 2017 V2版本正式发布
  • ERLANG 网工修炼笔记 ---- UDP
  • es6(二):字符串的扩展
  • IndexedDB
  • IP路由与转发
  • JAVA 学习IO流
  • JavaScript 基本功--面试宝典
  • JavaScript的使用你知道几种?(上)
  • Java深入 - 深入理解Java集合
  • Linux后台研发超实用命令总结
  • React+TypeScript入门
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 简单易用的leetcode开发测试工具(npm)
  • 一文看透浏览器架构
  • 自制字幕遮挡器
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • Spring第一个helloWorld
  • #数学建模# 线性规划问题的Matlab求解
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (二)linux使用docker容器运行mysql
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (十五)使用Nexus创建Maven私服
  • (转)ObjectiveC 深浅拷贝学习
  • *上位机的定义
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .net core 依赖注入的基本用发
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .net FrameWork简介,数组,枚举
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET程序员迈向卓越的必由之路
  • .net对接阿里云CSB服务
  • :如何用SQL脚本保存存储过程返回的结果集
  • @font-face 用字体画图标
  • [20140403]查询是否产生日志
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [30期] 我的学习方法
  • [Android Studio 权威教程]断点调试和高级调试
  • [Eclipse] 详细设置护眼背景色和字体颜色并导出