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

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

Lambda 表达式:

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

csharp 复制代码
Func<int, int, int> add = (a, b) => a + b;

自动属性:

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

csharp 复制代码
public int Age { get; set; }

集合初始化器:

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

csharp 复制代码
var list = new List<int> { 1, 2, 3 };

空值合并运算符:

简化了处理可能为 null 的情况。

csharp 复制代码
string name = null;
string result = name ?? "default";

字符串插值:

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

csharp 复制代码
string name = "John";
string message = $"Hello, {name}!";

模式匹配:

可以方便地检查对象的类型和属性。

csharp 复制代码
if (obj is MyClass myObj)
{
    // 使用 myObj
}

foreach 循环:

简化了遍历集合的过程。

csharp 复制代码
foreach (var item in collection)
{
    // 处理 item
}

using 语句:

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

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

扩展方法:

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

csharp 复制代码
public static class StringExtensions
{
    public static bool IsNullOrEmpty(this string str)
    {
        return string.IsNullOrEmpty(str);
    }
}

// 使用扩展方法
bool result = "test".IsNullOrEmpty();

命名参数:

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

csharp 复制代码
PrintName(firstName: "John", lastName: "Doe");

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

可空值类型:

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

csharp 复制代码
int? nullableInt = null;

委托:

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

csharp 复制代码
delegate int Operation(int x, int y);

不可变性:

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

csharp 复制代码
readonly int readOnlyValue = 10;
const int constantValue = 5;

模式匹配:

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

csharp 复制代码
switch (obj)
{
    case MyClass myObj:
        // 使用 myObj
        break;
    case null:
        // 处理 null
        break;
}

属性表达式:

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

csharp 复制代码
string propertyName = nameof(MyClass.MyProperty);
相关推荐
朝朝辞暮i4 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
小师兄吃牛肉5 小时前
C语言篇:宏
c语言·开发语言
郑同学的笔记6 小时前
【c++随笔28】strcmp 和 memcmp对比
开发语言·c++
未来之窗软件服务6 小时前
C# 截图源码支持自动保存-东方仙盟
c#·仙盟创梦ide·东方仙盟·电脑工具
搬砖的小码农_Sky6 小时前
AI Agent:如何处理Claude Code 最近版本(2026年更新)引入的模型上下文限制
人工智能·windows·ai·ai编程
言乐66 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
weixin_307779136 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
kakakahahahaha6 小时前
Windows C盘临时文件清理:%temp%、Windows Temp、Prefetch、Windows.old与hiberfil.sys处理指南
c语言·开发语言·windows
朝朝辞暮i6 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
朝朝辞暮i7 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法