首页 > 编程语言 >C#的10个语法糖

C#的10个语法糖

时间:2024-03-15 09:34:54浏览次数:30  
标签:10 string C# 运算符 语法 int 类型 ref

1、集合初始化器

List<string> names = new List<string> { "John", "Jane", "Alice" };
int[] numbers = { 1, 2, 3, 4, 5 };

2、空合并运算符

空合并运算符提供了一种简洁的方式来处理可能为null的值,它返回第一个非null的操作数。

string name = inputName ?? "Unknown";

3、条件访问运算符

条件访问运算符允许我们在访问对象的属性或调用方法之前,先检查对象是否为null。它可以减少空引用异常的发生。

string text = "abcdafdafadf";
int? length = text?.Length;

4、字符串插值

字符串插值使得在字符串中插入变量变得更加简单和直观,而不需要使用字符串连接操作符。

string name = "John";
int age = 30;
Console.WriteLine($"My name is {name} and I'm {age} years old.");

5、Lambda表达式

Lambda表达式提供了一种简洁的方式来定义匿名函数,使得代码更加简洁和可读。

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0);

6、异步和等待 (Async/Await)

异步和等待是C#中用于处理异步操作的关键字和模式。它们使得在执行耗时操作时,可以让程序保持响应,并在操作完成后继续执行相应的代码。

public async Task<string> GetDataAsync()
{
    HttpClient client = new HttpClient();
    string result = await client.GetStringAsync("https://api.example.com/data");
    return result;
}

7、引用传递和值传递简化

C# 7引入了ref locals和ref returns,使得在方法调用和赋值时可以更灵活地使用引用传递。

ref int GetReferenceToValue(ref int value)
{
    return ref value;
}
int x = 5;
ref int refX = ref GetReferenceToValue(ref x);
refX = 10; // 修改了原始变量x的值

8、分部方法

分部方法是一种特殊类型的方法,允许将方法的定义分割到多个部分中,其中一部分由开发者实现,另一部分由编译器生成。要求是必须声明在部分类里。

partial void LogMessage(string message);
// 编译器
partial void LogMessage(string message)
{
    // 代码逻辑
}

9、类型模式的 switch

C# 9引入了类型模式的 switch 表达式,使得在 switch 表达式中可以根据类型进行匹配和处理。

string result = obj switch
{
    string s => "它是string类型",
    int i => "他说int类型",
    _ => "未知类型"
};

10、扩展方法

扩展方法允许我们向现有的类型添加新的方法,而无需修改原始类型的定义,提高了代码的可扩展性。

public static class StringExtensions
{
    public static bool IsPalindrome(this string str)
    {
        // 判断字符串是否为回文
    }
}
string text = "level";
bool isPalindrome = text.IsPalindrome();

 

 

标签:10,string,C#,运算符,语法,int,类型,ref
From: https://www.cnblogs.com/privateLogs/p/18074700

相关文章

  • PyInstaller does not include a pre-compiled bootloader for your platform.
    用PyInstaller打包python程序时,收到下面错误:User140343INFO:BuildingPKGbecausePKG-00.tocisnonexistent140344INFO:BuildingPKG(CArchive)mainwindow.pkg215759INFO:BuildingPKG(CArchive)mainwindow.pkgcompletedsuccessfully.215891INFO:Bootloa......
  • c3p0 数据池入门使用教程
    dbcp系列从零开始手写mybatis(三)jdbcpool如何从零手写实现数据库连接池dbcp?万字长文深入浅出数据库连接池HikariCP/CommonsDBCP/Tomcat/c3p0/druid对比DatabaseConnectionPool数据库连接池概览c3p0数据池入门使用教程alibabadruid入门介绍数据库连接池Hikari......
  • 模版匹配——inspect_shape_model
    inspect_shape_modelcreatesarepresentationofashapemodel.TheoperatorisparticularlyusefulinordertodeterminetheparametersNumLevelsandContrast,whichareusedincreate_shape_model,create_scaled_shape_model,orcreate_aniso_shape_model,q......
  • eclipse关闭自动更新
    eclipse自动更新,更新完了,打开以后,发现lombok.jar是支持的,但是最顶部有一个错误,想了很多方法,没有处理好。 可能是jar包不支持当前版本,或者有些bug,也没有时间去研究这个。等新版本jar作了适配,再更新eclipse。 解决:下载之前的版本,安装,然后重新maven--updateproject...,一切......
  • Spring Schedule定时任务看这一篇就够了
    SpringSchedule 是指Spring框架提供的定时任务调度功能。SpringSchedule允许开发者在应用程序中便捷地创建和管理定时任务,比如按固定频率执行某些操作,或者按照cron表达式设定复杂的调度规则。SpringSchedule功能的依赖直接或间接地包含在 spring-boot-starter 家族中的相......
  • C++入门
    1、C++初识1.1、第一个C++程序编写一个C++程序总共分为4个步骤:创建项目;创建文件;编写代码;运行程序。1.2、注释单行注释://描述信息多行注释:/*描述信息*/1.3、变量变量存在的意义:方便我们管理内存。变量创建的语法:数据类型变量名=变量初始值; inta=10;1.4......
  • Vue2/3 实现动态循环的select下拉框去重功能:
    需求:前面下拉框选择某个选项(如:1)了,后面的下拉框不能在有前面选中内容的该选项(即不能在出现1的下拉选项)【Vue实现动态循环出的多个select不能重复选择相同的数据】注:下面注释的都可以根据需求更改 代码<template><divid="app"><divv-fo......
  • PyInstaller does not include a pre-compiled bootloader for your platform.
    用PyInstaller打包python程序时,收到下面错误:User140343INFO:BuildingPKGbecausePKG-00.tocisnonexistent140344INFO:BuildingPKG(CArchive)mainwindow.pkg215759INFO:BuildingPKG(CArchive)mainwindow.pkgcompletedsuccessfully.215891INFO:Bootloa......
  • cpp templates :auto推导
    目录常见推导函数的返回值常见推导1auto:产生拷贝,可以修改2auto&:左值引用,接受左值,可以修改3constauto&:const引用,可以接受左右值,不可修改4auto&&:万能引用,可以接受左右值,const引用时不能修改inta=100;constintb=100;autoa1=3;//a1为intautoa2......
  • Windows压缩文件可以用 PowerShell中的Compress-Archive
    压缩单个文件Compress-Archive-Path"D:\tmp\test.txt"-DestinationPath"D:\tmp\test.zip"压缩多个文件Compress-Archive-Path"D:\tmp\test.txt","D:\tmp\test2.txt"-DestinationPath"D:\tmp\test2.zip"压缩文件夹Comp......