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

簡介

? ? ? ? 當(dāng)下的.Net新版本引進了幾種新特性,包括全局命名空間引用、可空引用類型和頂級語句。這些特性在一定程度上改善了 .NET 平臺的開發(fā)效率, 對于短小精干的小程序,這些新的特性無疑可以把開發(fā)效率提高到新的高度。

正文

全局引用命名空間

? ? ? ? 在之前的版本中,如果想在整個項目中使用同一個命名空間中的類型,我們需要在每個文件里都使用 using 指令導(dǎo)入對應(yīng)的命名空間。但是使用全局命名空間引用特性后,我們只需要在程序集級別的文件中添加一個全局的命名空間導(dǎo)入,就可以在整個項目中使用該命名空間內(nèi)的類型。

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

// 文件名稱: GlobalUsings.cs

// 該文件為程序集級別的文件,添加在項目的根目錄下

global using System.Text.Json;

global using Microsoft.Extensions.Options;

//添加兩個常用的命名空間

namespace MyProject

{

? ? // ... 程序集其他代碼

}

? ? ? ? 上述代碼中,代碼文件 GlobalUsings.cs 引用了全局命名空間,分別導(dǎo)入了 System.Text.Json 和 Microsoft.Extensions.Options 命名空間。這樣,在項目的其他代碼文件中就可以直接使用 System.Text.Json 和 Microsoft.Extensions.Options 的類型,而不用每個文件都導(dǎo)入相應(yīng)的命名空間了。

? ? ? ? 需要注意的是,全局命名空間引用特性僅適用于 .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)

? ? ? ? {

? ? ? ? }

? ? ? ? 通過編譯器警告,可以讓開發(fā)者更明確的知道某些可為空引用類型是不是存在null的可能性,減少NullRefrenceException異常??梢酝ㄟ^"!"和"?"和判斷來消除警告,讓代碼意圖清晰。

頂級語句

using System;

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

? ? ? ? 使用頂級語句特性,可以在一個文件中直接編寫 C# 代碼,編譯器會自動將這些代碼生成為一個程序集。這個特性可以減少代碼文件數(shù)量、簡化程序結(jié)構(gòu),并提高代碼編譯和運行速度。但需要注意的是,使用頂級語句特性,會在編譯時自動創(chuàng)建一個默認的命名空間,因此文件中不能再包含其他命名空間或類。并且一個項目只能有一個文件使用頂級語句特性

總結(jié)

1. .NET 7 中的全局命名空間引用特性可以在一個項目的全局范圍內(nèi)導(dǎo)入命名空間,從而減少代碼中使用 using 指令導(dǎo)入命名空間的重復(fù)頭部的工作。

2. 可空類型(Nullable Type)是.NET中的值類型,在表示這些類型的變量時,允許變量持有 null 值。在.NET 8中新增了 nullable 特性以簡化編碼。使用 nullable 特性,我們可以使用 '?' 代替可空類型,使代碼更加簡潔易讀。

3. 頂級語句特性是自 .NET 5 起推出的,它使程序員可以更方便地編寫和運行小程序,而無需創(chuàng)建額外的類和方法。使用頂級語句特性,程序員可以在一個文件中直接編寫 C# 代碼,編譯器會自動將這些代碼生成為一個程序集。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容