What is new in .NET 8 and C#12
目录
What is new in .NET 8?
.NET Aspire
Core .NET Libraries
Metrics软件度量
Networking
Extension Libraries
Garbage Collection
Reflection Improvements
Native AOT Support
NET SDK
What is new in C# 12 ?
Primary Constructors
Collection Expressions
Inline Arrays
Optional Parameters in Lambda Expressions
ref readonly parameters
Alias Any Type
C# Top-level statements, Global usings, Pattern Matching
Top-Level Statements
Global Usings
C# Pattern Matching模式匹配
Pattern Matching
C# Pattern Matching with Switch Expressions
往期版本的C#:
What is new in C# 7,8,9,10-CSDN博客
What is the new in C#11?-CSDN博客
What is new in .NET 8?
.NET Aspire
Cloud-ready stack designed for building observable, production-ready distributed apps.
NuGet packages targeting specific cloud-native concerns, now available in preview.
云就绪堆栈,专为构建可观察、生产就绪的分布式应用程序而设计。
针对特定云原生问题的 NuGet 包,现已提供预览版。
Core .NET Libraries
Serialization enhancements, time abstraction, UTF8 improvements, methods for working with randomness, and performance-focused types like System.Numerics and System.Runtime.Intrinsics.
序列化增强功能、时间抽象、UTF8 改进、使用随机性的方法以及注重性能的类型(如 System.Numerics 和 System.Runtime.Intrinsics)。
Metrics软件度量
Attach key-value pair tags to Meter and Instrument objects, allowing for more nuanced differentiation in aggregated metric measurements.
将键值对标签附加到 Meter 和 Instrument 对象,从而在聚合指标测量中实现更细微的区分。
Networking
Support for HTTPS proxy, ensuring encrypted communication even in proxy scenarios, thus enhancing privacy and security
Extension Libraries
Options validation, LoggerMessageAttribute constructors, extended metrics, hosted lifecycle services, keyed DI services.
Garbage Collection
On-the-fly adjustment of memory limits, a crucial feature for cloud-service scenarios where dynamic scaling is mandatory.
Reflection Improvements
Enhanced for better performance and more efficient memory usage. Function pointers also added reflection capabilities
Native AOT Support
Efficient compilation and execution, particularly beneficial for cloud-native and high-performance scenarios.
NET SDK
More robust and feature-rich, aligning with the evolving needs of modern .NET development. Enhanced dotnet publish and dotnet pack commands.
更强大、功能更丰富,符合现代 .NET 开发不断变化的需求。增强了 dotnet publish 和 dotnet pack 命令。
What is new in C# 12 ?
Primary Constructors
Primary constructors have been extended beyond record types. Parameters are now in scope for the entire class body.
Should assigned, explicitly declared constructors must call the primary constructor using this() syntax.
主构造函数已扩展到记录类型之外。参数现在位于整个类主体的范围内。
应分配、显式声明的构造函数必须使用 this() 语法调用主构造函数。
public class Person(string name, int age){// Name and Age are in scope for the entire class bodypublic string Name => name;public int Age => age;}
Collection Expressions
More concise syntax to create common collection values. Simplifies the way collections are initialized and manipulated.
更简洁的语法来创建通用集合值。简化了集合的初始化和操作方式。
var numbers = new List<int> { 1, 2, 3, ..otherNumbers };
var numbers = new List<int> { 1, 2, 3, ..otherNumbers };
Inline Arrays
- Enhance performance by enabling developers to create fixed-size arrays in struct types.
- Useful for optimizing memory layout and improving runtime performance.
public struct Buffer{public Span<int> InlineArray => MemoryMarshal.CreateSpan(ref _array[0], 10);private int[] _array;}
Optional Parameters in Lambda Expressions
Default values for parameters in lambda expressions. This mirrors the syntax and rules for adding default values in methods, making lambda expressions more flexible.
Func<int, int, int> add = (x, y = 1) => x + y;
Console.WriteLine(add(5)); // Outputs 6
ref readonly parameters
- Enhances the way readonly references are passed in C#.
- Optimizing memory usage and performance in scenarios involving large data structures.
public void ProcessLargeData(in LargeData data){// Processing data without the risk of modifications}
Alias Any Type
● Using alias directive to include any type, not just named types.
● Creation of semantic aliases for complex types like tuples, arrays, and pointer types.
using Coordinate = System.ValueTuple<int, int>;
Coordinate location = (10, 20);
C# Top-level statements, Global usings, Pattern Matching
Top-Level Statements
Simplify the entry point of your applications. Instead of wrapping your main logic in a Main method, you can directly write the code at the top level of your file.
using System;
Console.WriteLine("Hello, World!");
Global Usings
Make namespaces available across your entire project. Instead of repeating using statements in every file, you declare them globally in one place.
//create GlobalUsing.cs
global using System;
global using System.Collections.Generic;
C# Pattern Matching模式匹配
Pattern Matching
● More expressive syntax for checking and deconstructing values in your code.
public class Person{public string Name { get; set; }public string Title { get; set; }}Person person = new Person { Name = "Evan", Title = "Manager" };if (person is { Title: "Manager" }){Console.WriteLine($"{person.Name} is a manager.");}
C# Pattern Matching with Switch Expressions
Pattern Matching - using switch expressions to compare discrete values.
public State PerformOperation(Operation command) =>command switch{Operation.SystemTest => RunDiagnostics(),Operation.Start => StartSystem(),Operation.Stop => StopSystem(),Operation.Reset => ResetToReady(),_ => throw new ArgumentException("Invalid enum value for command",nameof(command)),};
相关文章:
What is new in .NET 8 and C#12
目录 What is new in .NET 8? .NET Aspire Core .NET Libraries Metrics软件度量 Networking Extension Libraries Garbage Collection Reflection Improvements Native AOT Support NET SDK What is new in C# 12 ? Primary Constructors Collection Expressio…...

基于R语言的统计分析基础:使用键盘输入数据
在R语言中,键盘输入数据是一种灵活且直接的数据获取方式,适用于处理小数据集或需要即时用户交互的场景。通常用于交互式数据探索和分析、临时数据处理、交互式图形绘制、脚本自动化中的用户交互、特定应用场景下的数据录入中。 比如利用readline()函数根…...

unity3d入门教程九
unity3d入门教程九 20.2播放音频20.3在代码中播放21.1延时调用21.2invoke API21.3消息调用22.1交互界面22.2添加canvas22.3canavas的位置22.4添加text 这里给一个资源网站,可以部分免费下载,音乐和音效超多,支持检索 爱给网 https://www.aige…...

着色器 简介
着色器(Shader)是运行在 GPU 上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间…...
redis单点、主从、哨兵、集群的不同
redis哨兵模式有几个: 单点主从哨兵集群 区别 主从模式:读写分离。 哨兵模式:哨兵模式是在主从模式的基础上添加了故障检测和自动故障转移的功能。还是读写分离。 哨兵节点负责监控主节点和从节点的状态,并在主节点宕机时选举新…...

notepad++的json查看
json文件查看 因为接触到3dtile模型,所以经常需要和json打交道,但是很多模型是下面这种情况,不好阅读,所以可以使用notepad的插件查看 正常打开是这样的 加载notepad插件 搜索json下载安装就可以了 如果网络抽象,下载…...

基于无人机影像的可见光单木分割数据集-json格式
基于无人机影像的可见光单木分割数据集,共1700张影像,数据集大小3.6GB,分割标注采用标准json格式。 该数据集是一个专门用于基于无人机可见光影像进行单木分割的数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的图像分割…...

毕业设计选题:基于ssm+vue+uniapp的捷邻小程序
开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...
【毕业设计】基于 PHP 开发的社区交流系统
基于 PHP 开发的社区交流系统可以是一个论坛、博客平台或是问答网站等形式的在线平台,用于用户之间的互动交流。以下是一个简单的 PHP 社区交流系统的示例,包括用户注册、登录、发布帖子、回复帖子等功能。 技术栈 前端:HTML, CSS, JavaScr…...
RK3568 解决Ubuntu加载驱动模块报错以及开机启动如何自动加载模块
遇到问题是,当我在buildroot文件系统跑这个ko文件,是可以正常使用的,但是在Ubuntu上却跑不了,提示:insmod: ERROR: could not insert module analyze_inode.ko: Operation not permitted 参考其他博主的博客,其实只要添加sudo即可,可能是权限问题导致无法加载,这里记录…...

Fyne ( go跨平台GUI )中文文档-Fyne总览(二)
本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne…...
微服务常见面试题总结
文章目录 1 概念1.1 你对微服务是怎么理解的1.2 微服务带来了哪些挑战?1.3 说下微服务有哪些组件?🔥 2 注册中心2.1 注册中心有什么用?🔥2.2 SpringCloud可以选择哪些注册中心?2.3 说下Eureka 和 Nacos的区…...

汽车电子零部件(16):ZCU区域控制器
ZCU(Zone Control Unit,区域控制器),功能主要包括哦数据交互、信号控制及电力分配等,是智能网联汽车中不可或缺的关键组件,ECU负责车身、车门、车窗、天窗、车灯(外大灯、内氛围灯)、座椅(可能包括座椅音响)、雷达甚至后排娱乐系统等控制执行单元的集中化。 CCU(centr…...
如何在Java服务中实现数据一致性:事务与锁机制的综合应用
如何在Java服务中实现数据一致性:事务与锁机制的综合应用 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java服务端开发中,确保数据一致性是构建稳定可靠系统的关键。尤…...

记录一下ElementUI 3 在浏览器导入, table表格显示问题
当时问题忘了截图, 现在通过文字记录一下问题 我直接在html了引入 vue3 和 ElementUI 3 , 使用了table组件, 但是表格的td 总是只显示一列, 问题是我的 el-table-column 标签 没有结束标签 , 在vue文件模块化里写不需要结束标签, 在浏览器里无法直接识别出来, 所以他是渲染了第…...
【JavaScript】数据结构之堆
什么是堆? 堆都能用树来表示,一般树的实现都是利用链表。而 二叉堆 是一种特殊的堆,它用完全二叉树来表示,却可以利用数组实现。平时使用最多的是二叉堆。二叉堆易于存储,并且便于索引。堆数据结构像树,但…...

工程车辆目标检测、程车检测算法、工程车辆类型检测算法
工程车检测算法主要用于智能交通系统、建筑工地管理、矿山开采、物流运输等领域,通过图像识别技术来检测和识别工程车,以提高安全管理、交通流量管理和资源调度的效率。以下是关于工程车检测算法的技术实现、应用场景及优势的详细介绍。 一、技术实现 工…...

【技术文章】ArcGIS Pro如何批量导出符号和工程样式?
目录 1.确定Pro软件版本 2.共享工程样式 3.管理和调用项目样式 制作好的地图,如何快速分享地图中的符号样式用于其它地图的制作? 在ArcMap软件中,可以通过命令一键批量导出所有符号。ArcGIS Pro软件是否也可以批量导出符号用于其它地图…...

javascript的闭包学习
为什么要产生闭包的概念,通俗来说一下。 公司有一个项目,分为两个部分,张三、李四各分配一个部分。 张三.js代码: var key我要吃肉 function fn(){console.log(key); } 李四.js代码: var key我要喝酒 function fn…...
JavaScript高级—— js 是单线程运行的
1、如何证明 js 执行时单线程的? ① setTimeout()的回调函数是在主线程执行的 ② 定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行 2、为什么 js 要用单线程模式,而不用多线程模式? ① JavaScript 的单…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...