当前位置: 首页 > 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

相关文章:

  • Generalized Sparse Additive Model with Unknown Link Function
  • vue全局注册组件
  • Y3学习打卡
  • 【3-3】springcloud
  • 【每日学点HarmonyOS Next知识】网络请求回调toast问题、Popup问题、禁止弹窗返回、navigation折叠屏不显示返回键、响应式布局
  • Deepseek:物理神经网络PINN入门教程
  • element-push el-date-picker日期时间选择器,禁用可选中的时间 精确到分钟
  • OpenCV计算摄影学(11)色调映射算法类cv::TonemapDrago
  • 【量化策略】网格交易策略
  • 本地安装git
  • Sass基础
  • Django框架下html文件无法格式化的解决方案
  • 初识Qt · Qt的基本认识和基本项目代码解释
  • Firefox缩小标签页高度以及自定义调整
  • PDF文本转曲线轮廓 ​PDF转图片、提取文本和图片
  • 高性能采集服务上线回顾
  • Leetcode 209 长度最小的子数组
  • RX580双卡32GB显存跑DeepSeek-R17b、8b、14b、32b实测
  • vue3+vant4+js的移动端项目,每次部署完项目后,部分点击跳转至新页面的事件就失效了,不跳转,也不报错,如何解决?
  • Linux知识-第一天
  • 中日有关部门就日本水产品输华问进行第三次谈判,外交部回应
  • 新买宝马竟是“维修车”,男子发视频维权被4S店索赔100万
  • 硅料巨亏后弘元绿能割肉求生:逾12亿元内蒙古公司股权转让协鑫
  • 高进华“控股”后首份年报出炉,史丹利账上可动资金大幅缩水
  • 李云泽:再批复600亿元,进一步扩大保险资金长期投资试点范围
  • 山东滕州市醉驾交通事故肇事人员已被刑拘