C# 9的一些新特性

news/2025/2/13 1:57:06/

C# 9有以下更新:

  1. 模式匹配的增强,包括新的逻辑运算符、新的 is 表达式、新的 switch 表达式等。

  2. 新的 init-only 属性,使属性只能在初始化时赋值。

  3. 新的记录类型(record types),可以用于快速创建不可变对象。

  4. 函数成员可以是顶层语句,无需在类中定义。

  5. 新的 with 表达式,可用于基于现有记录类型创建新的记录类型。

  6. 新的 Lambda 表达式的语法,包括更简洁的参数列表和更灵活的类型推断。

  7. 新的类型推断语法,包括 var 和 target-typed new 表达式。

  8. 支持异步流(async streams)和异步可枚举(async enumerables)。

在代码中的体现:

  1. 模式匹配的增强:
  2. // 新的逻辑运算符
    if (a is 1 or 2) { ... } // 新的 is 表达式
    if (obj is string s) { ... }// 新的 switch 表达式
    string result = myValue switch {"a" => "A","b" => "B","c" => "C",_ => "unknown"
    };
    
  3. 新的 init-only 属性:
  4. public class Person
    {public string Name { get; init; }public int Age { get; init; }
    }var person = new Person { Name = "John", Age = 30 };
    person.Age = 40; // 编译错误
    
  5. 新的记录类型:
  6. public record Person(string Name, int Age);var person = new Person("John", 30);
    var newPerson = person with { Age = 40 };
    
  7. 函数成员可以是顶层语句:
  8. using System;Console.WriteLine("Hello, world!");
    

  9. 新的 with 表达式:
  10. var person = new Person("John", 30);
    var newPerson = person with { Age = 40 };
    
  11. 新的 Lambda 表达式的语法:

  1. // 更简洁的参数列表
    (int x, int y) => x + y// 更灵活的类型推断
    (int x, _) => x
    

  2. 新的类型推断语法:
  3. // var
    var person = new Person("John", 30);// target-typed new 表达式
    Person person = new("John", 30);
    

  4. 支持异步流和异步可枚举:
  5. async IAsyncEnumerable<int> GenerateNumbersAsync()
    {for (int i = 0; i < 10; i++){await Task.Delay(100);yield return i;}
    }await foreach (var number in GenerateNumbersAsync())
    {Console.WriteLine(number);
    }
    


http://www.ppmy.cn/news/113779.html

相关文章

1.6 初探JdbcTemplate操作

一、JdbcTemplate案例演示 1、创建数据库与表 &#xff08;1&#xff09;创建数据库 执行命令&#xff1a;CREATE DATABASE simonshop DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 或者利用菜单方式创建数据库 - simonshop 打开数据库simonshop &#x…

感应雷电浪涌的防线,SPD浪涌保护器

SPD - Surge Protective Device SPD 是防止雷击导致故障的避雷器&#xff0c;代表浪涌保护设备。一般指浪涌保护器&#xff0c;浪涌保护器&#xff0c;也叫防雷器&#xff0c;是一种为各种电子设备、仪器仪表、通讯线路提供安全防护的电子装置。 IEC/ EN61643-11 &#xff08…

服务器阵列卡做RAID10(LSI 9260-8I)

在BISO里按Ctrl H进入阵列卡配置&#xff08;我这里阵列卡型号是LSI 9260-8I带电池版本&#xff09;&#xff0c;使用阵列卡来做RAID性能更好&#xff0c;因为RAID调度都由阵列卡来完成&#xff0c;如果是BIOS里做会大量消耗CPU资源&#xff0c;因为调度都由CPU去完成&#xf…

LSI MegaRAID SAS 9260-8i数据安全测试记录

为了保证硬盘数据安全&#xff0c;考虑使用raid5存储数据&#xff0c;虽然可以使用主板raid5&#xff0c;但如果是主板损坏则可能无法挽回数据&#xff0c;同时raid性能也较差&#xff0c;所以考虑采用硬件raid卡&#xff0c;数据安全为首要目的&#xff0c;性能其次。同时为了…

【ASM9260T】【LINUX-3.10】asm9260t芯片简介

紫芯官网如下&#xff1a; http://www.alphascale.com/index.asp?yfa.html asm9260t, 封装LQFP 176-14x14(21x21) 240MHz ARM926EJ-S 内核 16KBytes 数据 cache,16KBytes 指令 cache, MMU存储器 Nand Flash 控制器,具有 24bits/512 bytes 的 ECC 纠错能力 支持 Quad-SPI 接口…

AT91SAM9260开发板

◆ 采用ATMEL AT91SAM9260 CPU&#xff0c;ARM926EJ-S核处理器; ◆ 具有8Kb指令、数据缓存&#xff0c;主频200MHz&#xff0c;运行时性能可达210MIPS; ◆ 采用3.3V NAND FLASH&#xff0c; 简单、易采购&#xff0c;批量使用成本更低; ◆ 丰富资源&#xff1a;多达7路串口&…

AT91SAM9260手册关于Power Management Controller章节翻译

之前都是看别人的文章&#xff0c;现在自己也记录一下自己的心得&#xff0c;公司应用9260好几年了&#xff0c;最近一段时间出现了问题&#xff0c;系统异常重启&#xff0c;老是kernel panic&#xff0c;考虑到底层驱动内核和u-boot一直没动&#xff0c;出现问题的原因应该是…

ubuntu16.04安装Intel 9260AC无线网卡填坑记录

由于本科毕设环境需要&#xff0c;本人在笔记本上安装了win10ubuntu16.04双系统&#xff0c;但是由于之前给笔记本换过无线网卡&#xff0c;型号是intel 9260AC&#xff0c;当时还是比较新的&#xff0c;但是发现在Ubuntu系统里面无法连接WIFI&#xff0c;折腾了很久&#xff0…