成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發
今天咱們一起來看看在 C# 14 中新增的幾個功能特性,是否給我們日常編碼帶了來便利。

今天咱們一起來看看在 C# 14 中新增的幾個功能特性,是否給我們日常編碼帶來了便利。

前提準備

要體驗 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 容器,可以聲明擴展塊,擴展塊是包含類型或該類型的實例的擴展成員的非嵌套、非泛型靜態類中的塊。在 C# 14 之前,將修飾符添加到 this 靜態方法的第一個參數,以指示該方法顯示為參數類型的實例的成員。

下面的代碼示例定義了 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 關鍵字

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

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

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

C# 14 開始,現在可以簡化代碼:

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

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

隱式跨度轉換

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

在 C# 和運行時中,Span<T> 和 ReadOnlySpan<T> 被用于多種關鍵方式。他們的引入可提高性能,而不會造成安全風險。C# 14 識別其相互關系,并支持在 ReadOnlySpan<T>、Span<T> 和 T[] 之間進行一些轉換。跨度類型可以作為擴展方法的接收器、與其他轉換組合,或者在泛型類型推理場景中提供幫助。

未綁定的泛型類型與nameof

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

帶修飾符的簡單 lambda 參數

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

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

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

注意:部分構造函數和分部事件必須包含一個定義聲明和一個實現聲明。

Null 條件賦值

Null 條件成員訪問運算符“?.”和“?[]”現在可在賦值或復合賦值的左側使用。

在 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 中可以使用運算符簡化上述代碼 ?. :

注意:運算符 = 的右側僅在左側不為 null 時才會被計算。如果 userInfo 為 null,則代碼不調用 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;
        }

參考文章:

責任編輯:趙寧寧 來源: 追逐時光者
相關推薦

2009-10-14 18:35:25

2009-08-03 13:55:03

C#基礎知識

2009-08-13 09:46:49

C#歷史C# 4.0新特性

2020-02-17 15:29:00

石墨文檔

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#

2009-09-01 13:26:42

JBossWS 3.2

2021-01-13 11:28:48

TensorFlow 機器學習人工智能

2023-11-23 10:21:11

ECMAScriptJavaScript

2009-06-02 09:38:26

javafx發布JavaFX介紹JavaFX

2017-10-24 14:57:12

前端Vue 2.5新功能特性

2009-03-08 19:05:05

Windows 7企業版

2009-06-22 11:24:00

J2EE Weblog

2012-02-27 16:44:01

redisNoSQL

2015-05-11 14:18:45

2024-07-25 13:53:19

2013-12-12 14:04:28

C編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区在线视频 | 日韩精品一区二区三区免费视频 | 国产精品一区在线 | 福利视频一区 | 91精品国产综合久久久久 | 91免费电影 | 2018国产精品 | 久久精品国产一区二区电影 | 一a级片 | 久久亚洲一区二区三区四区 | 国产在线观看一区二区三区 | 黄色在线免费观看视频网站 | 欧美性受xxx | 毛片一区二区三区 | 亚洲高清网 | 九九热在线视频免费观看 | 9久久婷婷国产综合精品性色 | 午夜视频免费 | 国产探花在线精品一区二区 | 日本一区二区高清不卡 | 一区二区视频 | a国产一区二区免费入口 | 欧美精品综合 | 二区在线视频 | 亚洲五码在线 | 免费的日批视频 | 亚洲精品久久国产高清情趣图文 | 伊人色综合久久久天天蜜桃 | 精品欧美一区二区精品久久久 | 国产午夜精品一区二区三区在线观看 | 免费看黄视频网站 | www.日韩av.com | 丁香综合 | 伊人亚洲 | 超碰在线97国产 | 精品一区在线 | 久久久免费少妇高潮毛片 | 五月花丁香婷婷 | 一级片网址| 中文字幕第一页在线 | 69av网|