当前位置: 首页 > news >正文

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语言中&#xff0c;键盘输入数据是一种灵活且直接的数据获取方式&#xff0c;适用于处理小数据集或需要即时用户交互的场景。通常用于交互式数据探索和分析、临时数据处理、交互式图形绘制、脚本自动化中的用户交互、特定应用场景下的数据录入中。 比如利用readline()函数根…...

unity3d入门教程九

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

着色器 简介

着色器&#xff08;Shader&#xff09;是运行在 GPU 上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说&#xff0c;着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序&#xff0c;因为它们之间不能相互通信&#xff1b;它们之间…...

redis单点、主从、哨兵、集群的不同

redis哨兵模式有几个&#xff1a; 单点主从哨兵集群 区别 主从模式&#xff1a;读写分离。 哨兵模式&#xff1a;哨兵模式是在主从模式的基础上添加了故障检测和自动故障转移的功能。还是读写分离。 哨兵节点负责监控主节点和从节点的状态&#xff0c;并在主节点宕机时选举新…...

notepad++的json查看

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

基于无人机影像的可见光单木分割数据集-json格式

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

毕业设计选题:基于ssm+vue+uniapp的捷邻小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…...

【毕业设计】基于 PHP 开发的社区交流系统

基于 PHP 开发的社区交流系统可以是一个论坛、博客平台或是问答网站等形式的在线平台&#xff0c;用于用户之间的互动交流。以下是一个简单的 PHP 社区交流系统的示例&#xff0c;包括用户注册、登录、发布帖子、回复帖子等功能。 技术栈 前端&#xff1a;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​​​​​​​ 这是一个系列文章&#xff1a; Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne…...

微服务常见面试题总结

文章目录 1 概念1.1 你对微服务是怎么理解的1.2 微服务带来了哪些挑战&#xff1f;1.3 说下微服务有哪些组件&#xff1f;&#x1f525; 2 注册中心2.1 注册中心有什么用&#xff1f;&#x1f525;2.2 SpringCloud可以选择哪些注册中心&#xff1f;2.3 说下Eureka 和 Nacos的区…...

汽车电子零部件(16):ZCU区域控制器

ZCU(Zone Control Unit,区域控制器),功能主要包括哦数据交互、信号控制及电力分配等,是智能网联汽车中不可或缺的关键组件,ECU负责车身、车门、车窗、天窗、车灯(外大灯、内氛围灯)、座椅(可能包括座椅音响)、雷达甚至后排娱乐系统等控制执行单元的集中化。 CCU(centr…...

如何在Java服务中实现数据一致性:事务与锁机制的综合应用

如何在Java服务中实现数据一致性&#xff1a;事务与锁机制的综合应用 大家好&#xff0c;我是微赚淘客返利系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在Java服务端开发中&#xff0c;确保数据一致性是构建稳定可靠系统的关键。尤…...

记录一下ElementUI 3 在浏览器导入, table表格显示问题

当时问题忘了截图, 现在通过文字记录一下问题 我直接在html了引入 vue3 和 ElementUI 3 , 使用了table组件, 但是表格的td 总是只显示一列, 问题是我的 el-table-column 标签 没有结束标签 , 在vue文件模块化里写不需要结束标签, 在浏览器里无法直接识别出来, 所以他是渲染了第…...

【JavaScript】数据结构之堆

什么是堆&#xff1f; 堆都能用树来表示&#xff0c;一般树的实现都是利用链表。而 二叉堆 是一种特殊的堆&#xff0c;它用完全二叉树来表示&#xff0c;却可以利用数组实现。平时使用最多的是二叉堆。二叉堆易于存储&#xff0c;并且便于索引。堆数据结构像树&#xff0c;但…...

工程车辆目标检测、程车检测算法、工程车辆类型检测算法

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

【技术文章】ArcGIS Pro如何批量导出符号和工程样式?

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

javascript的闭包学习

为什么要产生闭包的概念&#xff0c;通俗来说一下。 公司有一个项目&#xff0c;分为两个部分&#xff0c;张三、李四各分配一个部分。 张三.js代码&#xff1a; var key我要吃肉 function fn(){console.log(key); } 李四.js代码&#xff1a; var key我要喝酒 function fn…...

JavaScript高级—— js 是单线程运行的

1、如何证明 js 执行时单线程的&#xff1f; ① setTimeout&#xff08;&#xff09;的回调函数是在主线程执行的 ② 定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行 2、为什么 js 要用单线程模式&#xff0c;而不用多线程模式&#xff1f; ① JavaScript 的单…...

Asian Beauty Z-Image Turbo效果展示:不同光照角度(侧逆光/伦勃朗光/蝴蝶光)表现

Asian Beauty Z-Image Turbo效果展示&#xff1a;不同光照角度&#xff08;侧逆光/伦勃朗光/蝴蝶光&#xff09;表现 在摄影艺术中&#xff0c;光线是塑造人物灵魂的画笔。侧逆光勾勒轮廓&#xff0c;伦勃朗光刻画戏剧&#xff0c;蝴蝶光则带来柔和与优雅。对于专注于东方美学…...

PicGo无法安装插件| 提示“请安装 Node.js 并重启 PicGo 再继续操作”(问题已解决)

​​​​​​ &#x1f4cc; 问题分析&#xff1a;PicGo 提示“请安装 Node.js 并重启 PicGo 再继续操作” PicGo 提示“请安装 Node.js 并重启 PicGo 再继续操作”&#xff0c;说明问题出在环境变量或进程识别上&#xff0c;或者未安装 Node.js。本篇就前者进行分解&#xff0…...

家庭实验室方案:树莓派控制OpenClaw调用远程Qwen3-32B服务

家庭实验室方案&#xff1a;树莓派控制OpenClaw调用远程Qwen3-32B服务 1. 为什么选择树莓派OpenClaw组合 去年冬天&#xff0c;当我试图用语音控制家里的智能设备时&#xff0c;发现市面上的解决方案要么需要持续联网&#xff08;隐私堪忧&#xff09;&#xff0c;要么响应延…...

Keil工程管理效率翻倍:Python脚本实现构建结果自动归档与HTML报告生成

Keil工程管理效率翻倍&#xff1a;Python脚本实现构建结果自动归档与HTML报告生成 在嵌入式开发领域&#xff0c;Keil作为主流开发工具链的核心组件&#xff0c;其工程管理效率直接影响着团队协作和产品迭代速度。传统开发流程中&#xff0c;工程师往往需要手动收集每次构建生成…...

AI开发不再卡顿:RTX4090D 24G镜像解决环境冲突全攻略

AI开发不再卡顿&#xff1a;RTX4090D 24G镜像解决环境冲突全攻略 1. 为什么选择RTX4090D 24G深度学习镜像&#xff1f; 深度学习开发者最头疼的问题莫过于环境配置。不同框架版本、CUDA版本、依赖库之间的冲突常常让人望而却步。传统环境搭建方式需要&#xff1a; 手动安装C…...

Web开发环境快速搭建:Miniconda-Python3.11镜像实战应用

Web开发环境快速搭建&#xff1a;Miniconda-Python3.11镜像实战应用 1. 为什么选择Miniconda-Python3.11 Python作为Web开发的主流语言之一&#xff0c;环境配置一直是新手面临的第一个挑战。Miniconda-Python3.11镜像提供了一种开箱即用的解决方案&#xff0c;相比传统安装方…...

PyTorch Vision模型微调终极指南:从零到精通的迁移学习实战

PyTorch Vision模型微调终极指南&#xff1a;从零到精通的迁移学习实战 【免费下载链接】vision pytorch/vision: 一个基于 PyTorch 的计算机视觉库&#xff0c;提供了各种计算机视觉算法和工具&#xff0c;适合用于实现计算机视觉应用程序。 项目地址: https://gitcode.com/…...

彻底解决Windows 11系统稳定性问题:ExplorerPatcher核心技术解析与实战指南

彻底解决Windows 11系统稳定性问题&#xff1a;ExplorerPatcher核心技术解析与实战指南 【免费下载链接】ExplorerPatcher 提升Windows操作系统下的工作环境 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 当你的Windows 11系统频繁出现界面无响应…...

鸿蒙SpeechKit离线语音识别避坑指南:从PCM格式到权限配置,一次搞定

鸿蒙SpeechKit离线语音识别实战避坑指南 1. 音频格式的致命陷阱 PCM格式是鸿蒙SpeechKit离线语音识别的唯一选择&#xff0c;但开发者常犯的错误远不止文件类型这么简单。我曾见过一个团队花费三天时间排查识别率低的问题&#xff0c;最终发现是采样深度设置错误——这个细节在…...

OpenClaw硬件选购指南:百川2-13B-4bits量化版在不同GPU上的表现

OpenClaw硬件选购指南&#xff1a;百川2-13B-4bits量化版在不同GPU上的表现 1. 为什么需要关注硬件配置 去年冬天&#xff0c;当我第一次尝试在本地部署OpenClaw对接百川2-13B模型时&#xff0c;我的旧显卡GTX 1660 Ti直接崩溃了。那次经历让我深刻认识到——选择合适的硬件对…...