.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 首个预览版已经在前两天发布,该版本在 .NET Runtime、SDK、libraries、C#、ASP.NET Core、Blazor 和 .NET MAUI 等多个方面都有重大改进和增强。其中C# 14 预览版也伴随着.NET 10预览版一起发布了,今天就和大家一起体验一下.NET 10 和 C# 14 。 …...
java下载多个网络文件并压缩成压缩包保存到本地
背景 开发票的时候远程会返回发票的url,现在客户端需要下载发票;因为一个订单可能不止一张发票,因此需要通过网络把远程的文件下载回来并压缩成压缩文件进行返回。 实现 本文的例子直接基于java.net包下面的类实现。(因为是基于…...
23种设计模式之单例模式(Singleton Pattern)【设计模式】
文章目录 一、简介二、关键点三、实现单例模式的步骤四、C#示例4.1 简单的单例模式4.2 线程安全的单例模式(双重检查锁定)4.3 静态初始化单例模式 五、单例模式优缺点5.1 优点5.2 缺点 六、适用场景七、示例的现实应用 一、简介 单例模式(Si…...
[项目]基于FreeRTOS的STM32四轴飞行器: 四.LED控制
基于FreeRTOS的STM32四轴飞行器: 四.LED控制 一.配置Com层二.编写驱动 一.配置Com层 先在Com_Config.h中定义灯位置的枚举类型: 之后定义Led的结构体: 定义飞行器状态: 在Com_Config.c中初始化四个灯: 在Com_Config.h外部声明…...
使用 dynamic-datasource-spring-boot-starter 实现多数据源动态切换
目录 在实际开发中,我们经常会遇到需要在一个项目中连接多个数据源的场景。例如,一个应用可能需要同时访问多个数据库,或者根据业务需求动态切换数据源。dynamic-datasource-spring-boot-starter 是一个基于 Spring Boot 的轻量级多数据源动态…...
springboot中注解有什么用
注解(Annotation)是 Java 的一个重要特性,我用几个具体例子来解释: 1、标记功能 Service // 告诉Spring这是一个服务类 public class UserService { }Data // 告诉Lombok自动生成getter/setter public class User {private…...
Spring Boot 缓存最佳实践:从基础到生产的完整指南
Spring Boot 缓存最佳实践:从基础到生产的完整指南 引言 在现代分布式系统中,缓存是提升系统性能的银弹。Spring Boot 通过 spring-boot-starter-cache 模块提供了开箱即用的缓存抽象,但如何根据业务需求实现灵活、可靠的缓存方案…...
Linux网络相关内容与端口
网络相关命令 ping命令测试连接状态 wget命令:非交互式文件下载器,可以在命令行内下载网络文件 使用ctrlc可以中止下载 curl命令:可以发送http网络请求,用于文件下载、获取信息等 其实和浏览器打开网站一样,cu…...
Python Flask框架学习汇编
1、入门级: 《Python Flask Web 框架入门》 这篇博文条理清晰,由简入繁,案例丰富,分十五节详细讲解了Flask框架,强烈推荐! 《python的简单web框架flask【附例子】》 讲解的特别清楚,每一步都…...
GitHub CI流水线
GitHub CI流水线 build.yml 路径:.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…...
机器视觉运动控制一体机在天地盖同步跟随贴合解决方案
市场应用背景 纸盒天地盖是一种包装形式,广泛应用于消费电子、食品礼盒、奢侈品及化妆品等领域。其采用高强度纸板,经过预组装处理,结构坚固稳定,能有效保护产品并提升品牌形象。随着包装行业快速发展,市场对天地盖的…...
贪心算法一
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是贪心算法,并且掌握贪心算法。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! >…...
什么是全栈?
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点下班 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 📃文章前言 🔷文章均为学习工…...
后端-Java虚拟机
Java虚拟机 Java虚拟机的组成 Java虚拟机的组成由类加载器ClassLoader、运行时数据区域(JVM管理的内存)和执行引擎(即时遍历器、解释器垃圾回收器) 类加载器加载class字节码文件中的内容到内存运行时数据区域负责管理jvm使用到…...
Android 低功率蓝牙之BluetoothGattCallback回调方法详解
BluetoothGattCallback 是 Android 中用于处理蓝牙低功耗(BLE)设备通信的核心回调类。它负责处理与 BLE 设备的连接、服务发现、数据读写等操作的结果。以下是对 BluetoothGattCallback 的详细解析: 1. onConnectionStateChange 触发时机&am…...
K8S学习之基础十四:k8s中Deployment控制器概述
Deployment控制器概述: Deployment控制器是k8s中最常用的资源对象,为Replicaset和Pod创建提供了一种声明式的定义方法,在Deployment对象中描述一个期望的状态,Deployment控制器就会按照一定的控制速率把实际状态改成期望状态&…...
Vue3快速入门笔记
目录 1.Vue3简介1.1.性能提升1.2.源码升级1.3.拥抱TypeScript1.4.新特性 2.创建Vue3工程2.1.基于 vue-cli 创建2.2. 基于 vite 创建(推荐)2.3.代码运行 3.Vue3核心语法3.1.OptionsAPI(选项式API) 与 CompositionAPI(组合式API)3.2.setup3.3.ref 创建&…...
【LeetCode104】二叉树的最大深度
题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 思路与算法 树的最大深度可以通过其左子树和右子树的最大深度来定义。对于给定节点,最大深度为 1(当前节点࿰…...
SQLAlchemy系列教程:理解SQLAlchemy元数据
SQLAlchemy是Python开发人员的强大ORM工具。SQLAlchemy中的元数据是对象-关系映射配置的集合,允许开发人员无缝地定义和使用数据库模式。 使用元数据 SQLAlchemy中的元数据充当各种数据库描述符(如表、列和索引)的容器。这使开发人员能够通…...
Apache Shiro 反序列化漏洞全解析(Shiro-550 Shiro-721)
一、前言 Apache Shiro 是一个强大的 Java 安全框架,广泛用于用户认证、授权、加密和会话管理。然而,由于 Shiro 在某些版本中存在反序列化漏洞,攻击者可以通过特定手法实现远程代码执行(RCE),进而获取服务…...
3步解锁全显卡AI超分:让老旧设备焕发新生的开源黑科技
3步解锁全显卡AI超分:让老旧设备焕发新生的开源黑科技 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler AI超分辨率技术正…...
旧Mac升级终极指南:用OpenCore Legacy Patcher解锁新系统完整方案
旧Mac升级终极指南:用OpenCore Legacy Patcher解锁新系统完整方案 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当你的老款Mac提示"此设备不支持最新ma…...
零门槛构建专属A股数据平台:3大优势+4步部署+5类应用场景
零门槛构建专属A股数据平台:3大优势4步部署5类应用场景 【免费下载链接】AShareData 自动化Tushare数据获取和MySQL储存 项目地址: https://gitcode.com/gh_mirrors/as/AShareData 还在为量化研究时反复下载数据而抓狂?每次回测都要等待API响应&a…...
Qwen3-0.6B-FP8效果展示:实时流式输出延迟<120ms(RTX3060实测)
Qwen3-0.6B-FP8效果展示:实时流式输出延迟<120ms(RTX3060实测) 你还在为本地部署大模型需要高端显卡而烦恼吗?或者觉得那些动辄几十GB的模型下载起来太费劲?今天,我要给你展示一个完全不同的解决方案—…...
幻境·流金惊艳效果:微观世界视角——细胞结构、晶体生长、电路板纹路超清生成
幻境流金惊艳效果:微观世界视角——细胞结构、晶体生长、电路板纹路超清生成 “流光瞬息,影画幻成。” 想象一下,你正透过一台超级显微镜,观察一个我们肉眼无法触及的微观世界。在那里,细胞壁的纹理如同精密的蜂巢&…...
为什么说程序 = 算法 + 数据结构
什么是程序?理解了算法和数据结构是什么,我们就能更清晰地定义程序:程序是算法和数据结构在特定编程语言中的具体实现。它是一系列指令的集合,这些指令精确地描述了如何操作(算法)特定组织的数据࿰…...
Fast Lab突破:3D激光雷达+强化学习如何重塑无人机自主避障新范式?
1. 当无人机遇上3D激光雷达:一场感知革命 想象一下,你操控的无人机正在茂密的树林中穿行,突然前方出现几根几乎透明的钓鱼线——这种场景会让任何飞手瞬间冒冷汗。传统基于视觉或超声波传感器的无人机就像戴着高度近视眼镜的短跑运动员&#…...
化工模拟老司机的原油蒸馏骚操作
Aspen 化工过程模拟虚拟组分蒸馏原油 本可模型 在本模型中,将使用pseudocomponents进行原油蒸馏。 将创建一个由常压蒸馏塔和真空蒸馏塔组成的模型。 常压蒸馏塔将使用 Chao-Seader 热力学模型建模,而真空蒸馏塔将使用 Braun K10 模型建模。在Aspen里折腾…...
S2-Pro大模型CentOS 7生产环境部署全攻略:安全与高可用配置
S2-Pro大模型CentOS 7生产环境部署全攻略:安全与高可用配置 1. 前言:为什么需要生产级部署方案 当你第一次在测试环境跑通S2-Pro大模型时,那种兴奋感可能让你迫不及待想上线使用。但现实往往很骨感——测试环境能跑通,不代表生产…...
让Claude和ChatGPT直接操作你的GitHub和Gmail:基于n8n和MCP协议打造AI专属‘工具箱’实战
基于MCP协议构建AI驱动的自动化工作流:从GitHub到Gmail的无缝衔接 当AI助手不仅能回答问题,还能直接操作你的GitHub仓库、管理收件箱时,工作效率将发生质的飞跃。这种能力并非来自魔法,而是通过MCP协议将AI与自动化工具n8n深度整合…...
