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

.NET10 - 预览版1新功能体验(一)

.NET 10 首个预览版已经在前两天发布,该版本在 .NET Runtime、SDK、libraries、C#、ASP.NET Core、Blazor 和 .NET MAUI 等多个方面都有重大改进和增强。其中C# 14 预览版也伴随着.NET 10预览版一起发布了,今天就和大家一起体验一下.NET 10 和 C# 14 。

在这里插入图片描述

01、安装

首先需要下载.NET 10.0.0-preview.1版本SDK,然后直接安装即可。

在这里插入图片描述

安装完成后,可以通过dotnet --list-sdks指令查看是否已成功安装.NET 10 review 1。

在这里插入图片描述

除此之外还可以通过更新IDE Visual Studio 2022至最新版本。

02、创建.NET 10 类库

下面我们就来在 Visual Studio 2022 中体验.NET 10 。

但是当我们创建.NET 10类库时,却发现框架列表中并没有.NET 10 选项,如下图。

在这里插入图片描述

这是因为Visual Studio默认不可以使用预览版的SDK。因此我们先要在IDE中开启使用预览版SDK功能,具体开启方法如下:

首先选中菜单中的工具,然后点开选项对话框,在环境列表中找到预览功能,找到使用.NET SDK预览版复选框并选中,最后点击确认即可。记得需要重启Visual Studio。

在这里插入图片描述

我们再次创建.NET 10 类库,此时发现框架列表中已经可以选择.NET 10选项了,如下图:

在这里插入图片描述

03、开启C# 14预览版

在.NET 10 预览版 1 中也跟随着发布了C# 14 预览版。但是要想使用C# 14预览版功能也是需要做一些设置的。

我们可以先选中上节创建的NET10类库,然后右键鼠标,选择属性,找到生成中的高级选项,可以发现当前语言版本还是C# 13 ,如下图。

在这里插入图片描述

因此我们需要选择类库,右键鼠标,选择编辑项目文件,在PropertyGroup中添加preview节点,如下图。

在这里插入图片描述

此时我们将可以使用C# 14 预览版功能了。

04、C# 14功能体验

1.field关键字

该关键字主要作用是在编写属性访问器时,不需要额外显示编写一个后备字段。

下面我们看下新老版本中编写一个属性访问器的差异,代码如下:

//老版本写法
private string _msg;
public string MessageOld
{get => _msg;set => _msg = value;
}
//新版本写法
public string MessageNew
{get;set => field = value;
}

field关键字不单单是让我们少写一个后备字段使得代码更简洁,同时也使得代码更安全,防止了因为不小心导致其他属性方法错误使用后备字段。

其实该关键字在C# 13预览版就已经有了,但是最终并包含进C# 13正式版本中,我个人还是很期待它可以进入C# 14 正式版本中的。

2.nameof表达式支持未绑定的泛型类型

在新的语法中,nameof表达式的参数可以是未绑定的泛型类型,如List<>,则结果为“List”,示例代码如下:

var result = nameof(List<>);
Console.WriteLine($"nameof(List<>) 结果为:{result}");

在这里插入图片描述

而在老的语法中并不支持这样写,否则会报错。

3.Span隐式转换

在C# 14中对System.Span 和 System.ReadOnlySpan类型的支持进一步加强,添加了一些新的隐式转换,进而使得你在使用这些类型时更加方便自然,即获得了代码的性能同时还不牺牲代码的安全性。

下面我们就通过代码演示在C# 14中,int数组隐式转为Span和ReadOnlySpan,以及Span隐式转换ReadOnlySpan,代码如下:

public static class SpanExtensions
{public static void HandleSpan<T>(this Span<T> span){}public static void HandleReadOnlySpan<T>(this ReadOnlySpan<T> span){}
}
static class Program
{static void Main(){var array = new int[4] { 5, 6, 7, 8 };//直接调用拓展方法,int数组隐式转换为Span<int>array.HandleSpan();//直接调用拓展方法,int数组隐式转换为ReadOnlySpan<int>array.HandleReadOnlySpan(); Span<int> span = array;//直接调用拓展方法,Span<int>隐式转换为ReadOnlySpan<int>span.HandleReadOnlySpan();}
}

C# 14还有一些其他更新,后续我们将继续讲解。

:测试方法代码以及示例源码都已经上传至代码库,有兴趣的可以看看。https://gitee.com/hugogoos/Planner

相关文章:

.NET10 - 预览版1新功能体验(一)

.NET 10 首个预览版已经在前两天发布&#xff0c;该版本在 .NET Runtime、SDK、libraries、C#、ASP.NET Core、Blazor 和 .NET MAUI 等多个方面都有重大改进和增强。其中C# 14 预览版也伴随着.NET 10预览版一起发布了&#xff0c;今天就和大家一起体验一下.NET 10 和 C# 14 。 …...

java下载多个网络文件并压缩成压缩包保存到本地

背景 开发票的时候远程会返回发票的url&#xff0c;现在客户端需要下载发票&#xff1b;因为一个订单可能不止一张发票&#xff0c;因此需要通过网络把远程的文件下载回来并压缩成压缩文件进行返回。 实现 本文的例子直接基于java.net包下面的类实现。&#xff08;因为是基于…...

23种设计模式之单例模式(Singleton Pattern)【设计模式】

文章目录 一、简介二、关键点三、实现单例模式的步骤四、C#示例4.1 简单的单例模式4.2 线程安全的单例模式&#xff08;双重检查锁定&#xff09;4.3 静态初始化单例模式 五、单例模式优缺点5.1 优点5.2 缺点 六、适用场景七、示例的现实应用 一、简介 单例模式&#xff08;Si…...

[项目]基于FreeRTOS的STM32四轴飞行器: 四.LED控制

基于FreeRTOS的STM32四轴飞行器: 四.LED控制 一.配置Com层二.编写驱动 一.配置Com层 先在Com_Config.h中定义灯位置的枚举类型&#xff1a; 之后定义Led的结构体&#xff1a; 定义飞行器状态&#xff1a; 在Com_Config.c中初始化四个灯&#xff1a; 在Com_Config.h外部声明…...

使用 dynamic-datasource-spring-boot-starter 实现多数据源动态切换

目录 在实际开发中&#xff0c;我们经常会遇到需要在一个项目中连接多个数据源的场景。例如&#xff0c;一个应用可能需要同时访问多个数据库&#xff0c;或者根据业务需求动态切换数据源。dynamic-datasource-spring-boot-starter 是一个基于 Spring Boot 的轻量级多数据源动态…...

springboot中注解有什么用

注解&#xff08;Annotation&#xff09;是 Java 的一个重要特性&#xff0c;我用几个具体例子来解释&#xff1a; 1、标记功能 Service // 告诉Spring这是一个服务类 public class UserService { }Data // 告诉Lombok自动生成getter/setter public class User {private…...

Spring Boot 缓存最佳实践:从基础到生产的完整指南

Spring Boot 缓存最佳实践&#xff1a;从基础到生产的完整指南 引言 在现代分布式系统中&#xff0c;缓存是提升系统性能的银弹。Spring Boot 通过 spring-boot-starter-cache​ 模块提供了开箱即用的缓存抽象&#xff0c;但如何根据业务需求实现灵活、可靠的缓存方案&#xf…...

Linux网络相关内容与端口

网络相关命令 ping命令测试连接状态 wget命令&#xff1a;非交互式文件下载器&#xff0c;可以在命令行内下载网络文件 使用ctrlc可以中止下载 curl命令&#xff1a;可以发送http网络请求&#xff0c;用于文件下载、获取信息等 其实和浏览器打开网站一样&#xff0c;cu…...

Python Flask框架学习汇编

1、入门级&#xff1a; 《Python Flask Web 框架入门》 这篇博文条理清晰&#xff0c;由简入繁&#xff0c;案例丰富&#xff0c;分十五节详细讲解了Flask框架&#xff0c;强烈推荐&#xff01; 《python的简单web框架flask【附例子】》 讲解的特别清楚&#xff0c;每一步都…...

GitHub CI流水线

GitHub CI流水线 build.yml 路径&#xff1a;.github/workflows/build.yml name: Docker Image CIon:workflow_dispatch:jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkoutv4- name: Set up JDK 8uses: actions/setup-javav4with:java-version: 8distributi…...

机器视觉运动控制一体机在天地盖同步跟随贴合解决方案

市场应用背景 纸盒天地盖是一种包装形式&#xff0c;广泛应用于消费电子、食品礼盒、奢侈品及化妆品等领域。其采用高强度纸板&#xff0c;经过预组装处理&#xff0c;结构坚固稳定&#xff0c;能有效保护产品并提升品牌形象。随着包装行业快速发展&#xff0c;市场对天地盖的…...

贪心算法一

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是贪心算法&#xff0c;并且掌握贪心算法。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! >…...

什么是全栈?

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点下班 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 &#x1f4c3;文章前言 &#x1f537;文章均为学习工…...

后端-Java虚拟机

Java虚拟机 Java虚拟机的组成 Java虚拟机的组成由类加载器ClassLoader、运行时数据区域&#xff08;JVM管理的内存&#xff09;和执行引擎&#xff08;即时遍历器、解释器垃圾回收器&#xff09; 类加载器加载class字节码文件中的内容到内存运行时数据区域负责管理jvm使用到…...

Android 低功率蓝牙之BluetoothGattCallback回调方法详解

BluetoothGattCallback 是 Android 中用于处理蓝牙低功耗&#xff08;BLE&#xff09;设备通信的核心回调类。它负责处理与 BLE 设备的连接、服务发现、数据读写等操作的结果。以下是对 BluetoothGattCallback 的详细解析&#xff1a; 1. onConnectionStateChange 触发时机&am…...

K8S学习之基础十四:k8s中Deployment控制器概述

Deployment控制器概述&#xff1a; Deployment控制器是k8s中最常用的资源对象&#xff0c;为Replicaset和Pod创建提供了一种声明式的定义方法&#xff0c;在Deployment对象中描述一个期望的状态&#xff0c;Deployment控制器就会按照一定的控制速率把实际状态改成期望状态&…...

Vue3快速入门笔记

目录 1.Vue3简介1.1.性能提升1.2.源码升级1.3.拥抱TypeScript1.4.新特性 2.创建Vue3工程2.1.基于 vue-cli 创建2.2. 基于 vite 创建&#xff08;推荐&#xff09;2.3.代码运行 3.Vue3核心语法3.1.OptionsAPI(选项式API) 与 CompositionAPI(组合式API)3.2.setup3.3.ref 创建&…...

【LeetCode104】二叉树的最大深度

题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 思路与算法 树的最大深度可以通过其左子树和右子树的最大深度来定义。对于给定节点&#xff0c;最大深度为 1&#xff08;当前节点&#xff0…...

SQLAlchemy系列教程:理解SQLAlchemy元数据

SQLAlchemy是Python开发人员的强大ORM工具。SQLAlchemy中的元数据是对象-关系映射配置的集合&#xff0c;允许开发人员无缝地定义和使用数据库模式。 使用元数据 SQLAlchemy中的元数据充当各种数据库描述符&#xff08;如表、列和索引&#xff09;的容器。这使开发人员能够通…...

Apache Shiro 反序列化漏洞全解析(Shiro-550 Shiro-721)

一、前言 Apache Shiro 是一个强大的 Java 安全框架&#xff0c;广泛用于用户认证、授权、加密和会话管理。然而&#xff0c;由于 Shiro 在某些版本中存在反序列化漏洞&#xff0c;攻击者可以通过特定手法实现远程代码执行&#xff08;RCE&#xff09;&#xff0c;进而获取服务…...

计算机毕业设计Python+DeepSeek-R1大模型空气质量预测分析(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

实例详细演示在Pytest中如何忽略警告

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 当你尝试运行Pytest代码时&#xff0c;那些不相关的警告突然弹出&#xff0c;是不是…...

03 HarmonyOS Next仪表盘案例详解(二):进阶篇

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; 文章目录 前言1. 响应式设计1.1 屏幕适配1.2 弹性布局 2. 数据展示与交互2.1 数据卡片渲染2.2 图表区域 3. 事件处理机制3.1 点击事件处理3.2 手势…...

mysql进阶(三)

MySQL架构和存储引擎 1. MySQL架构 MySQL8.0服务器是由连接池、服务管理⼯具和公共组件、NoSQL接⼝、SQL接⼝、解析器、优化 器、缓存、存储引擎、⽂件系统组成。MySQL还为各种编程语⾔提供了⼀套⽤于外部程序访问服务器 的连接器。整体架构图如下所⽰&#xff1a; 2. 连接层 …...

MySQL 架构、索引优化、DDL解析、死锁排查

私人博客传送门 MySQL 认识索引 | 魔筝炼药师 MySQL 索引优化 | 魔筝炼药师 OnlineDDL&#xff08;在 MySQL 5.7 数据库里&#xff0c;InnoDB引擎&#xff0c;执行一条DDL会发生什么事情&#xff09; | 魔筝炼药师 MySQL 死锁排查 | 魔筝炼药师...

AVM 环视拼接 鱼眼相机

https://zhuanlan.zhihu.com/p/651306620 AVM 环视拼接方法介绍 从内外参推导IPM变换方程及代码实现&#xff08;生成AVM环视拼接图&#xff09;_avm拼接-CSDN博客 经典文献阅读之--Extrinsic Self-calibration of the Surround-view System: A Weakly... (环视系统的外参自…...

【Flink银行反欺诈系统设计方案】5.反欺诈系统全生命周期设计

【Flink银行反欺诈系统设计方案】反欺诈系统全生命周期设计 概要&#xff1a;1. 事前反欺诈准备核心模块与架构&#xff1a; 2. 事中反欺诈发现与告警核心模块与架构&#xff1a; 3. 事后反欺诈事件分析核心模块与架构&#xff1a; 4. 反欺诈闭环架构设计整体技术栈&#xff1a…...

aardio - 虚表 —— 两个虚表之间互相拖动交换数据

插入到虚表末尾的方法&#xff1a; import win.ui; import godking.vlistEx; /*DSG{{*/ mainForm win.form(text"vlistEx - table adapter";right849;bottom578;border"thin") mainForm.add( radiobutton{cls"radiobutton";text"移动&qu…...

VScode 中文符号出现黄色方框的解决方法

VScode 中文符号出现黄色方框的解决方法 我的vscode的python多行注释中会将中文字符用黄色方框框处&#xff1a; 只需要打开设置搜索unicode&#xff0c;然后将这一项的勾选取消掉就可以了&#xff1a; 取消之后的效果如下&#xff1a; 另一种情况&#xff1a;中文显示出现黄色…...

LINUX网络基础 [二] - 网络编程套接字,UDP与TCP

目录 前言 一. 端口号的认识 1.1 端口号的作用 二. 初识TCP协议和UDP协议 2.1 TCP协议 TCP的特点 使用场景 2.2 UDP协议 UDP的特点 使用场景 2.3 TCP与UDP的对比 2.4 思考 2.5 总结 三. 网络字节序 3.1 网络字节序的介绍 3.2 网络字节序思考 四. socket接口 …...