首页 > 其他分享 >【介绍】.NET新加特性介绍

【介绍】.NET新加特性介绍

时间:2023-04-23 12:24:46浏览次数:24  
标签:特性 介绍 空间 新加 引用 命名 NET 代码

简介

        当下的.Net新版本引进了几种新特性,包括全局命名空间引用、可空引用类型和顶级语句。这些特性在一定程度上改善了 .NET 平台的开发效率, 对于短小精干的小程序,这些新的特性无疑可以把开发效率提高到新的高度。
正文

全局引用命名空间

        在之前的版本中,如果想在整个项目中使用同一个命名空间中的类型,我们需要在每个文件里都使用 using 指令导入对应的命名空间。但是使用全局命名空间引用特性后,我们只需要在程序集级别的文件中添加一个全局的命名空间导入,就可以在整个项目中使用该命名空间内的类型。

下面是一个使用全局命名空间引用特性的示例:

// 文件名称: GlobalUsings.cs
// 该文件为程序集级别的文件,添加在项目的根目录下

global using System.Text.Json;
global using Microsoft.Extensions.Options;
//添加两个常用的命名空间

namespace MyProject
{
    // ... 程序集其他代码
}

        上述代码中,代码文件 GlobalUsings.cs 引用了全局命名空间,分别导入了 System.Text.Json 和 Microsoft.Extensions.Options 命名空间。这样,在项目的其他代码文件中就可以直接使用 System.Text.Json 和 Microsoft.Extensions.Options 的类型,而不用每个文件都导入相应的命名空间了。

        需要注意的是,全局命名空间引用特性仅适用于 .NET 6 及以上版本,并且需要在程序集级别的文件中使用。此外,如果多个全局命名空间引用特性引用相同的命名空间时,编译器将忽略所有但第一个声明。

可为空引用类型

        在.NET 新版本中,新增了 nullable 特性。这个特性可以作为可空引用类型的一种方便的替代方式,它能让代码更加简洁和易读。

在nullable特性中,我们可以使用‘?’代替可空引用类型。

        假如我们需要对一个方法是否接受null值进行一个意图声明,在此之前没有比较好的办法去表达意图,而新增加的可为空引用类型可以很好的表达

        /// <summary>
        /// 表明此方法name不接受null,而address接受null
        /// </summary>
        /// <param name="name"></param>
        /// <param name="address"></param>
        public void NullableMethod(string name,string? address)
        {

        }

        通过编译器警告,可以让开发者更明确的知道某些可为空引用类型是不是存在null的可能性,减少NullRefrenceException异常。可以通过"!"和"?"和判断来消除警告,让代码意图清晰。

顶级语句

using System;

Console.WriteLine("Hello, world!");

        使用顶级语句特性,可以在一个文件中直接编写 C# 代码,编译器会自动将这些代码生成为一个程序集。这个特性可以减少代码文件数量、简化程序结构,并提高代码编译和运行速度。但需要注意的是,使用顶级语句特性,会在编译时自动创建一个默认的命名空间,因此文件中不能再包含其他命名空间或类。并且一个项目只能有一个文件使用顶级语句特性

总结

1. .NET 7 中的全局命名空间引用特性可以在一个项目的全局范围内导入命名空间,从而减少代码中使用 using 指令导入命名空间的重复头部的工作。

2. 可空类型(Nullable Type)是.NET中的值类型,在表示这些类型的变量时,允许变量持有 null 值。在.NET 8中新增了 nullable 特性以简化编码。使用 nullable 特性,我们可以使用 '?' 代替可空类型,使代码更加简洁易读。

3. 顶级语句特性是自 .NET 5 起推出的,它使程序员可以更方便地编写和运行小程序,而无需创建额外的类和方法。使用顶级语句特性,程序员可以在一个文件中直接编写 C# 代码,编译器会自动将这些代码生成为一个程序集。

标签:特性,介绍,空间,新加,引用,命名,NET,代码
From: https://www.cnblogs.com/xuyd/p/17346180.html

相关文章

  • centos部署.net5项目
    开发环境是vs2019创建一个.netcore项目 测试一下运行 然后发布到文件夹 将文件夹弄到服务器上安装.NET运行时sudorpm-Uvhhttps://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpmsudoyuminstalldotnet-sdk-5.0dotnet--info启动网站......
  • web3 产品介绍: walletconnect 连接Web3 DApps与用户的移动加密钱包
    WalletConnect是一种去中心化的开源协议,旨在连接Web3DApps与用户的移动加密钱包,提供更安全、更便捷的加密货币交易体验。在本文中,我们将介绍WalletConnect的主要特点、工作原理以及如何使用它来连接DApps和移动钱包。一、WalletConnect的特点去中心化:WalletConnect不依赖于任......
  • 记一次 .NET 某外贸ERP 内存暴涨分析
    一:背景1.讲故事上周有位朋友找到我,说他的API被多次调用后出现了内存暴涨,让我帮忙看下是怎么回事?看样子是有些担心,但也不是特别担心,那既然找到我,就给他分析一下吧。二:WinDbg分析1.到底是哪里的泄露这也是我一直在训练营灌输的理念,一定要知道是哪一边的暴涨,否则很可能就南......
  • Unlock the Power of High-Performance Networking with the IPQ9554
    UnlockthePowerofHigh-PerformanceNetworkingwiththeIPQ9554Intoday'sworld,reliableandhigh-speedinternetconnectivityisessentialforeverythingfromonlinegamingandstreamingtoremoteworkandlearning.Whetheryou'reaconsumer......
  • netty之TCP粘包拆包问题解决
    TCP粘包拆包问题解决什么TCP粘包和拆包问题假设客户端向服务端连续发送了两个数据包,分别用ABC和DEF来表示,那么服务端收到的数据可以分为以下三种情况:第一种情况,接收端正常收到两个数据包,即没有发生拆包和粘包的现象。第二种情况,接收端只收到一个数据包,这一个数据包中包含了发送端发......
  • 长连接Netty服务内存泄漏,看我如何一步步捉“虫”解决
    作者:京东科技王长春背景事情要回顾到双11.11备战前夕,在那个风雨交加的夜晚,一个急促的咚咚报警,惊破了电闪雷鸣的黑夜,将沉浸在梦香,熟睡的我惊醒。一看手机咚咚报警,不好!有大事发生了!电话马上打给老板:老板说:长连接吗?我说:是的!老板说:该来的还是要来的,最终还是来了,快,赶紧先把服......
  • Blender-介绍
    一、介绍Blender官网Blender中文参考手册Blender-shortcut主要功能Blender是一个完整集成的3D创作套件,提供了大量的基础工具,包括建模、渲染、动画&绑定、视频编辑、视觉效果、合成、贴图,以及多种类型的模拟。跨平台,使用了OpenGL的GUI可以在所有主流平台上......
  • LearnETutorial 中文系列教程【翻译完成】
    在线阅读在线阅读(Gitee)ApacheCN学习资源目录人工智能中文教程C中文教程Golang中文教程HTML中文教程Java中文教程机器学习中文教程PHP中文教程Python中文教程R中文教程网络安全中文教程贡献指南本项目需要校对,欢迎大家提交PullRequest。请您勇敢地去翻译和改进翻译。虽然......
  • MediaPlayer音频与视频的播放介绍
    Android多媒体中的——MediaPlayer,我们可以通过这个API来播放音频和视频该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码和播放音视频。它支持三种不同的媒体来源:本地资源内部的URI,比如你可以通过ContentResolver来获取外部URL(流)对于Android所支......
  • 视觉SLAM:模型介绍、算法框架及应用场景
    目录01 什么是SLAM 1.1 相机模型1.2 相机运动1.3建图02SLAM算法框架03SLAM的应用场景3.1自动驾驶的高精度定位3.2自主移动机器人知识扩展:组合导航(GNSS/INS)二维码导航/磁导航3.3室内场景的三维重建:AR(增强现实技术)等04 结语参考文献:本文主要想使用尽量少的专业词汇来解释......