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

打印 上一主题 下一主题

主题 977|帖子 977|积分 2931

.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关键字

该关键字主要作用是在编写属性访问器时,不须要额外表现编写一个后备字段。
下面我们看下新老版本中编写一个属性访问器的差异,代码如下:
  1. //老版本写法
  2. private string _msg;
  3. public string MessageOld
  4. {
  5.     get => _msg;
  6.     set => _msg = value;
  7. }
  8. //新版本写法
  9. public string MessageNew
  10. {
  11.     get;
  12.     set => field = value;
  13. }
复制代码
field关键字不但单是让我们少写一个后备字段使得代码更简洁,同时也使得代码更安全,防止了由于不小心导致其他属性方法错误使用后备字段。
实在该关键字在C# 13预览版就已经有了,但是最终并包含进C# 13正式版本中,我个人照旧很等待它可以进入C# 14 正式版本中的。
2.nameof表达式支持未绑定的泛型类型

在新的语法中,nameof表达式的参数可以是未绑定的泛型类型,如List,则结果为“List”,示例代码如下:
  1. var result = nameof(List<>);
  2. Console.WriteLine($"nameof(List<>) 结果为:{result}");
复制代码

而在老的语法中并不支持这样写,否则会报错。
3.Span隐式转换

在C# 14中对System.Span 和 System.ReadOnlySpan类型的支持进一步加强,添加了一些新的隐式转换,进而使得你在使用这些类型时更加方便自然,即获得了代码的性能同时还不捐躯代码的安全性。
下面我们就通过代码演示在C# 14中,int数组隐式转为Span和ReadOnlySpan,以及Span隐式转换ReadOnlySpan,代码如下:
  1. public static class SpanExtensions
  2. {
  3.     public static void HandleSpan<T>(this Span<T> span)
  4.     {
  5.     }
  6.     public static void HandleReadOnlySpan<T>(this ReadOnlySpan<T> span)
  7.     {
  8.     }
  9. }
  10. static class Program
  11. {
  12.     static void Main()
  13.     {
  14.         var array = new int[4] { 5, 6, 7, 8 };
  15.         //直接调用拓展方法,int数组隐式转换为Span<int>
  16.         array.HandleSpan();
  17.         //直接调用拓展方法,int数组隐式转换为ReadOnlySpan<int>
  18.         array.HandleReadOnlySpan();
  19.         Span<int> span = array;
  20.         //直接调用拓展方法,Span<int>隐式转换为ReadOnlySpan<int>
  21.         span.HandleReadOnlySpan();
  22.     }
  23. }
复制代码
C# 14另有一些其他更新,后续我们将继续解说。
:测试方法代码以及示例源码都已经上传至代码库,有爱好的可以看看。https://gitee.com/hugogoos/Planner

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表