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 的单…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践
在电商行业蓬勃发展的当下,多平台运营已成为众多商家的必然选择。然而,不同电商平台在商品数据接口方面存在差异,导致商家在跨平台运营时面临诸多挑战,如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...
麒麟系统使用-进行.NET开发
文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...
【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器(TI)推出的一款 汽车级同步降压转换器(DC-DC开关稳压器),属于高性能电源管理芯片。核心特性包括: 输入电压范围:2.95V–6V,输…...
