.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新功能体验(一)的更多相关文章

  1. Visual Studio 2022 预览版3 最新功能解说

    我们很高兴地宣布Visual Studio 2022 的第三个预览版问世啦!预览版3 提供了更多关于个人和团队生产力.现代开发和持续创新等主题的新功能.在本文中,我们将重点介绍Visual Studi ...

  2. 关于在Visual Studio 2019预览版中的用户体验和界面的变化

    原文地址:https://blogs.msdn.microsoft.com/visualstudio/2018/11/12/a-preview-of-ux-and-ui-changes-in-visu ...

  3. TMS WEB Core v1.2预览版:新的Electron应用程序支持

    2019年2月20日,星期三 几个月前,我们已经开始与Electron进行实验.在工作概念验证之后,我们的目标是为Delphi开发人员尽可能多地包装Electron API.但当然不仅仅是可以使用的E ...

  4. (转)ASP.NET MVC 第五个预览版和表单提交场景

    转自:http://ourlife.blog.51cto.com/708821/296171 上个星期四,ASP.NET MVC开发团队发布了ASP.NET MVC框架的“第五个预览版”.你可以在这里 ...

  5. Dubbo 3.0 预览版解读,6到飞起~

    , false).start(); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new St ...

  6. Azure SQL 数据库最新版本现已提供预览版

     Tiffany Wissner  数据平台营销高级总监 我们之前在11月宣布将提供新的预览版,在该预览版中我们引入了接近完整的 SQL Server 引擎兼容性和更为高级的性能,这些都代表了下一代的 ...

  7. .NET Core 3.0预览版7中的ASP.NET Core和Blazor更新

    .NET Core 3.0 Preview 7现已推出,它包含一系列ASP.NET Core和Blazor的新更新. 以下是此预览中的新功能列表: 最新的Visual Studio预览包括.NET C ...

  8. 20天等待,申请终于通过,安装和体验IntelliJ IDEA新UI预览版

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于IDEA的预览版 IDEA会启用新的UI,这事情之 ...

  9. VS2015预览版中的C#6.0 新功能(二)

    VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性 以前自动属性必须同时提供setter和getter方法,因而只读属性只能通 ...

  10. VS2015预览版中的C#6.0 新功能(三)

    VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(二) Using static 使用using StaticClass,你可以访问StaticClass类里的 ...

随机推荐

  1. 【金TECH频道】汇聚多元化超级算力,看见更好的“源启”

    越来越多的金融机构开始利用大数据和AI技术,提升信贷业务的效率,利用隐私计算打造开放式金融,让客户随时随地获得金融服务:气象领域,高精度计算让我们能准确地预测恶劣的天气,医疗大数据让部分癌症的治愈成为 ...

  2. Qt/C++编写视频监控系统82-自定义音柱显示

    一.前言 通过音柱控件实时展示当前播放的声音产生的振幅的大小,得益于音频播放组件内置了音频振幅的计算,可以动态开启和关闭,开启后会对发送过来的要播放的声音数据,进行运算得到当前这个音频数据的振幅,类似 ...

  3. Qt编写视频监控系统76-Onvif跨网段组播搜索和单播搜索的实现

    一.前言 在视频监控行业一般会用国际onvif工具来测试设备是否支持onvif协议,工具的名字叫ONVIF Device Manager(还有个工具叫ONVIF Device Test Tool,专用 ...

  4. 国产系统中标麒麟neokylin上的视频监控系统

    一.功能特点 (一)软件模块 视频监控模块,各种停靠小窗体子模块,包括设备列表.图文警情.窗口信息.云台控制.预置位.巡航设置.设备控制.悬浮地图.网页浏览等. 视频回放模块,包括本地回放.远程回放. ...

  5. Qt开发经验小技巧121-130

    QLineEdit除了单纯的文本框以外,还可以做很多特殊的处理用途. 限制输入只能输入IP地址. 限制输入范围,强烈推荐使用 QRegExpValidator 正则表达式来处理. //正在表达式限制输 ...

  6. DotNetBar115破解版下载地址

    DotNetBar115破解版下载地址: 百度网盘:https://pan.baidu.com/s/187bkgB6tGyp1jUicsljfkQ 提取码:v0za

  7. Go基于观察者模式实现的订阅/发布

    面UCloud的时候问到了这题,下来看了一下是基于观察者模式实现的,仅作记录 /** * @Author: lzw5399 * @Date: 2021/5/20 20:38 * @Desc: 基于观察 ...

  8. CF1763C Another Array Problem

    人类智慧题.harmis_yz 不会. 题意 \(\tt{Link}\) 给定一个序列 \(\{a_n\}\),可以进行若干次操作,每次可以选择 \(i,j(1 \le i < j \le n) ...

  9. 【Netty】(3)—源码NioEventLoopGroup

    netty(3)-源码NioEventLoopGroup 一.概念 NioEventLoopGroup对象可以理解为一个线程池,内部维护了一组线程,每个线程负责处理多个Channel上的事件,而一个C ...

  10. 项目PMP之十一项目风险管理

    项目PMP之十一--项目风险管理   一.定义:削弱负面风险,增强正面风险,将风险敞口保持在可接受的范围,扩大项目实现的概率 非事件类风险:变异性风险,已规划的不确定性(通过蒙特卡洛分析,缩小结果区间 ...