C# 语法糖

三元运算符 ?:

使用前

cs 复制代码
int value = -2;
if (value < 0)
{
    value = 0;
}
else
{
    value = 1;
}

使用后

cs 复制代码
int value = -2;
value = value < 0 ? 0 : 1;

Null 合并操作符 ??

使用前

cs 复制代码
string value = GetString();
if (value == null)
{
    value = "Empty";
}

使用后

如果左操作数的值不为null,则 null 合并运算符 ?? 返回该值;否则,它会计算右操作数并返回其结果。 如果左操作数的计算结果为非 null,则?? 运算符不会计算其右操作数。

cs 复制代码
string value = GetString() ?? "Empty";

内插字符串 $

字符串内插为格式化字符串提供了一种可读性和便捷性更高的方式。 它比字符串复合格式设置更容易阅读。

使用前

cs 复制代码
string name = "小明";
int age = 18;
string.Format("大家好,我叫{0},今年{1}岁。", name, age);

使用后

cs 复制代码
string name = "小明";
int age = 18;
var format = $"大家好,我叫{name},今年{age}岁。";

Null 条件运算符 ?.

如果对象为NULL,则不执行?.后面的逻辑

使用前

cs 复制代码
Action action;
if (action != null)
{
    action.Invoke();
}

使用后

cs 复制代码
Action action;
action?.Invoke();

可空类型修饰符 ?

引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。

例如:string str=null; 是正确的,int i=null; 编译器就会报错。

使用可空类型修饰符?可以让值类型变量赋值null

cs 复制代码
int? value = 0;
value = null;

using

当离开 using 语句块时,将释放获取的IDisposable实例。 using 语句可确保即使在 using 语句块内发生异常的情况下也会释放可释放实例。

使用前

cs 复制代码
StreamReader reader = null;
try
{
    reader = File.OpenText("numbers.txt");
}
finally
{
    reader?.Dispose();
}

使用后

cs 复制代码
using (StreamReader reader = File.OpenText("numbers.txt"))
{

}
相关推荐
R-G-B8 小时前
【14】C#实战篇——C++动态库dll 接口函数将char* strErr字符串 传给C# ,并且在winform的MessageBox和listbox中显示。C++ string 日志传给 C#
c++·c#·strerr字符串传给c#·动态库dll传递字符串给c#·string日志传给c#·c++ string传给 c#·c++底层函数日志传给c#显示
我是唐青枫10 小时前
深入掌握 FluentMigrator:C#.NET 数据库迁移框架详解
数据库·c#·.net
tiankongdeyige10 小时前
Unity学习之C#的反射机制
学习·unity·c#
绿荫阿广11 小时前
用纯.NET开发并制作一个智能桌面机器人(六):使用.NET开发一个跨平台功能完善的小智AI客户端
c#·.net·asp.net core·maui·winui
周杰伦fans13 小时前
c#设计模式—访问者模式
c#·.net
疯狂的Alex19 小时前
【C#避坑实战系列文章15】C# WinForm 上位机开发:解决串口粘包+LiveCharts卡顿+InfluxDB存储(免费代码+仿真工具)
sqlite·c#·上位机·串口通信·livechars·c#硬件对接
ajassi20001 天前
开源 C# 快速开发(十六)数据库--sqlserver增删改查
windows·开源·c#
大飞pkz1 天前
【设计模式】观察者模式
开发语言·观察者模式·设计模式·c#
唐青枫1 天前
深入掌握 FluentMigrator:C#.NET 数据库迁移框架详解
c#·.net
李宥小哥2 天前
C#基础08-面向对象
开发语言·c#