偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C# 14 新增功能一覽,你覺得實用嗎?

開發(fā)
今天咱們一起來看看在 C# 14 中新增的幾個功能特性,是否給我們?nèi)粘>幋a帶了來便利。

今天咱們一起來看看在 C# 14 中新增的幾個功能特性,是否給我們?nèi)粘>幋a帶來了便利。

前提準備

要體驗 C# 14 中的新增功能,你需要安裝最新的 Visual Studio 2022 版本或下載 .NET 10 SDK。

下載 .NET 10 SDK:https://dotnet.microsoft.com/zh-cn/download/dotnet/10.0

圖片

擴展成員(Extension Members)

從 C# 14 開始,可以使用兩種語法來定義擴展方法。C# 14 添加了 extension 容器,可以聲明擴展塊,擴展塊是包含類型或該類型的實例的擴展成員的非嵌套、非泛型靜態(tài)類中的塊。在 C# 14 之前,將修飾符添加到 this 靜態(tài)方法的第一個參數(shù),以指示該方法顯示為參數(shù)類型的實例的成員。

下面的代碼示例定義了 string 類型的擴展塊。擴展塊包含一個成員:計算字符串中單詞的方法:

C# 14 之前:

namespace CustomExtensionMethods;

public static class MyExtensions
{
    public static int WordCount(this string str) =>
        str.Split([' ', '.', '?'], StringSplitOptions.RemoveEmptyEntries).Length;
}

C# 14 開始:

namespace CustomExtensionMembers;

public static class MyExtensions
{
    extension(string str)
    {
        public int WordCount() =>
            str.Split([' ', '.', '?'], StringSplitOptions.RemoveEmptyEntries).Length;
    }
}

field 關(guān)鍵字

使用令牌 field 可以編寫屬性訪問器體,而無需聲明后備字段。令牌 field 將替換為編譯器合成支持字段。

例如,C# 14 之前,如果要確保 string 屬性無法設(shè)置為 null,則必須聲明一個后備字段并實現(xiàn)這兩個訪問器:

private string _msg;
public string Message
{
    get => _msg;
    set => _msg = value ?? throw new ArgumentNullException(nameof(value));
}

C# 14 開始,現(xiàn)在可以簡化代碼:

public string Message
{
    get;
    set => field = value ?? throw new ArgumentNullException(nameof(value));
}

可以為字段支持的屬性的一個或兩個訪問器聲明一個主體。

隱式跨度轉(zhuǎn)換

C# 14 在語言中引入了對 System.Span<T> 和 System.ReadOnlySpan<T> 的一流支持。這種支持包括新的隱式轉(zhuǎn)換,使得使用這些類型進行編程更加自然。

在 C# 和運行時中,Span<T> 和 ReadOnlySpan<T> 被用于多種關(guān)鍵方式。他們的引入可提高性能,而不會造成安全風險。C# 14 識別其相互關(guān)系,并支持在 ReadOnlySpan<T>、Span<T> 和 T[] 之間進行一些轉(zhuǎn)換??缍阮愋涂梢宰鳛閿U展方法的接收器、與其他轉(zhuǎn)換組合,或者在泛型類型推理場景中提供幫助。

未綁定的泛型類型與nameof

從 C# 14 開始,nameof 的參數(shù)可以是未綁定的泛型類型。例如,nameof(List<>) 計算為 List。在早期版本的 C# 中,只能使用關(guān)閉的泛型類型(例如 List<int>)返回 List 名稱。

帶修飾符的簡單 lambda 參數(shù)

從 C# 14 開始,可以在不指定參數(shù)類型的情況下,向 lambda 表達式參數(shù)添加參數(shù)修飾符,例如:scoped、ref、in、out或 ref readonly。

支持更多部分成員(partial members)

從 C# 14 開始可以將實例構(gòu)造函數(shù)和事件聲明為部分成員(partial members)。

注意:部分構(gòu)造函數(shù)和分部事件必須包含一個定義聲明和一個實現(xiàn)聲明。

Null 條件賦值

Null 條件成員訪問運算符“?.”和“?[]”現(xiàn)在可在賦值或復(fù)合賦值的左側(cè)使用。

在 C# 14 之前,在分配給屬性之前,需要對變量進行 null 檢查:

public static void GetUserInfo()
        {
            UserInfo userInfo = null;

            if (userInfo is not null)
            {
                userInfo.Age = CalculateAge(userInfo);
            }
        }

        private static int CalculateAge(UserInfo userInfo)
        {
            return DateTime.Now.Year - userInfo.Birthday.Year;
        }

在 C# 14 中可以使用運算符簡化上述代碼 ?. :

注意:運算符 = 的右側(cè)僅在左側(cè)不為 null 時才會被計算。如果 userInfo 為 null,則代碼不調(diào)用 CalculateAge。

public static void GetUserInfo()
        {
            UserInfo userInfo = null;
            userInfo?.Name = CalculateAge(userInfo);
        }

        private static int CalculateAge(UserInfo userInfo)
        {
            return DateTime.Now.Year - userInfo.Birthday.Year;
        }

參考文章:

責任編輯:趙寧寧 來源: 追逐時光者
相關(guān)推薦

2009-10-14 18:35:25

2009-08-03 13:55:03

C#基礎(chǔ)知識

2020-02-17 15:29:00

石墨文檔

2009-08-13 09:46:49

C#歷史C# 4.0新特性

2010-10-21 15:40:05

SQL Server服

2017-09-06 08:12:43

OpenStack功能模塊

2018-09-12 22:18:06

2025-04-16 00:00:02

2024-04-23 08:08:04

C#

2021-01-13 11:28:48

TensorFlow 機器學(xué)習(xí)人工智能

2009-09-01 13:26:42

JBossWS 3.2

2023-11-23 10:21:11

ECMAScriptJavaScript

2012-02-27 16:44:01

redisNoSQL

2009-06-02 09:38:26

javafx發(fā)布JavaFX介紹JavaFX

2017-10-24 14:57:12

前端Vue 2.5新功能特性

2009-03-08 19:05:05

Windows 7企業(yè)版

2009-06-22 11:24:00

J2EE Weblog

2015-05-11 14:18:45

2024-07-25 13:53:19

2010-10-14 16:55:00

MySQL聯(lián)結(jié)查詢
點贊
收藏

51CTO技術(shù)棧公眾號