【C#】 语法糖
一, 扩展方法
1. 对某个类功能上的扩展
2. 特点: 使用方便,可以在不修改原代码的基础上进行扩展。 参照 linq,linq 就是一系列的扩展方法
3. 语法: 非泛型静态类,静态方法, 第一个参数加 this,表示是对该类型的扩展
4. 代码
public static class Extension { private static int _defaultInt = 0; public static int ToInt(this string str) { if (int.TryParse(str,out _defaultInt)) { return _defaultInt; } return 0; } }
二, 运算符重载
1. 语法: 静态方法, 方法名 operator 加 运算符,参数类型 当前类
2. 不是很常用
3. 代码
public class Operator { public int Num { get; set; } public static int operator +(Operator o1, Operator o2) { return o1.Num + o2.Num; } }
三,Lambda
1. Lambda 可以看成是对委托的简化
2. 语法 ()=>{...}
3. Lambda 开始学习时会非常不习惯,但用惯了会非常上瘾的。代码变得更简洁。另 委托 推荐使用系统定义的 Action 和 Func,不需要自己去定义委托类型
4. 注意 延迟加载
5. 代码
Func<int, int, int> addFunc = (x, y) => x + y; int i = addFunc(5, 6);
四, Linq
1. 本质 扩展方法
2. 使用上 推荐 方法语法 而不是 类sql 语法。方法语法可读性高,而且更符合 c# 的语法。
3. 注意 延迟加载
4. 语法 Linq + Lambda + var , 简洁而优美
5. 代码
List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7 }; var v = list.Where(n => n < 3);
五, 匿名类型
1. 匿名类型 var
2. 使用场景 需要修改实体类属性,但又不想修改原实体类,也不想添加新的实体类,这可以用匿名类型
3. 特点 灵活
4. 代码
Operator op = new Operator { Num = 3 }; var v = new { OP = op, Name = "我是var" };
Console.WriteLine(v.OP.Num + v.Name);
六, 方法参数默认值
1. 简化重载, 将多个重载方法合并,减少代码量
2. 代码
private static void Main(string[] args)
{
ShowName();
ShowName("不是默认");
Console.ReadLine();
} private static void ShowName(string name = "默认名称")
{
Console.WriteLine(name);
}
七, 运算符
1. 三元 :
a. 替换简单的 if else
b. 语法 Console.WriteLine(i > 0 ? "大于0" : "小于0");
2. 默认值 :
a. 参数默认值,用在数据库非空非常好用
b. 语法 Console.WriteLine(s ?? "我是默认值");
八, const, readonly
1. const 常量:
a. 只能在创建实例时赋值且必须得赋值,赋值后后不能更改值
b. 静态的
c. 修饰引用类型只能是 string 或 null, 其他引用类型无法修饰
2. readonly 只读:
a. 只能在创建实例时赋值,或在构造函数里赋值
b. 可以是静态的,也可以是非静态的。静态的只能在静态构造里赋值,非静态的只能在非静态构造里赋值。
c. 可以修饰任何类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?