最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#11新特性預(yù)覽及使用介紹

 更新時間:2022年05月14日 12:47:13   作者:溪源More  
這篇文章主要為大家介紹了C#11新特性預(yù)覽及使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

.NET 首席項目經(jīng)理凱瑟琳在博客中介紹了 C# 11 的一些預(yù)覽性新功能,這些功能可以在 Visual Studio 17.1 和 .NET SDK 6.0.200 中體驗,下面摘錄一部分新特性作介紹:

C# 11 預(yù)覽:允許在內(nèi)插字符串的“插值表達式”中換行

內(nèi)插字符串(interpolated strings)是 C# 6.0 引入的語法,它允許在字符串中插入表達式。C# 的內(nèi)插字符串分為非逐字和逐字內(nèi)插字符串(分別是$""$@"")兩種。兩者最大的區(qū)別是:非逐字內(nèi)插字符串與普通字符串一樣,不能在字符串文本中包含換行符,必須使用轉(zhuǎn)義符(如\r、\n)。相反,逐字插值字符串可以在其文本段中包含換行符,并且不會轉(zhuǎn)義換行符或其他字符。

但是,非逐字插值字符串中的“換行符限制”,從字符串文本擴散到了文本之外的插值表達式,這導致了很多不必要的限制。比如在 C# 11 之前,下面這段代碼編譯起來會報錯:

var v = $"Count is\t: { this.Is.A.Really ()
                            .That.I.Should (
                                be + able)[
                                    to.Wrap ()] }.";

但在 C# 11 預(yù)覽版中,它是合法的,可以正常編譯。

關(guān)于該新特性的詳細討論可查看 GitHub Issue #4935。

C# 11 預(yù)覽:列表模式

新的列表模式允許將數(shù)組或列表與一系列模式匹配,例如 array is [1, 2, 3] 將匹配長度為 3 的整數(shù)數(shù)組,其元素分別為 1、2、3。除了允許匹配列表和數(shù)組,還可以匹配元素,且可以選擇包含零個或多個元素的切片模式。使用切片模式可以丟棄或捕獲零個或多個元素。

列表模式的語法是用方括號括起來的值,切片模式的語法是兩個點..。切片模式后面可以跟著另一個列表模式,比如 var 模式來捕獲切片內(nèi)容。

比如,該模式匹配以下所有內(nèi)容:[1, 2, .., 10]

int[] arr1 = { 1, 2, 10 };
int[] arr1 = { 1, 2, 5, 10 };
int[] arr1 = { 1, 2, 5, 6, 7, 8, 9, 10 };

要探索列表模式,請參考:

public static int CheckSwitch (int[] values)
    => values switch
    {
        [1, 2, .., 10] => 1,
        [1, 2] => 2,
        [1, _] => 3,
        [1, ..] => 4,
        [..] => 50
    };

當它傳遞以下數(shù)組時,結(jié)果如下所示:

WriteLine (CheckSwitch (new[] { 1, 2, 10 }));          // prints 1
WriteLine (CheckSwitch (new[] { 1, 2, 7, 3, 3, 10 })); // prints 1
WriteLine (CheckSwitch (new[] { 1, 2 }));              // prints 2
WriteLine (CheckSwitch (new[] { 1, 3 }));              // prints 3
WriteLine (CheckSwitch (new[] { 1, 3, 5 }));           // prints 4
WriteLine (CheckSwitch (new[] { 2, 5, 6, 7 }));        // prints 50

還可以捕獲切片模式的結(jié)果:

public static string CaptureSlice (int[] values)
    => values switch
    {
        [1, .. var middle, _] => $"Middle {String.Join (", ", middle)}",
        [.. var all] => $"All {String.Join (", ", all)}"
    };

列表模式適用于任何可計數(shù)和可索引的類型 —— 這意味著它有一個可訪問的LengthCount屬性,以及一個帶intSystem.Index形參的索引器。

切片模式適用于任何可計數(shù)和可切片的類型 —— 這意味著它有一個以Range為實參的可訪問索引器,或者具有兩個int形參的可訪問Slice方法。

目前正在考慮在 IEnumerable 類型上添加對列表模式的支持,點此查看關(guān)于該列表模式的詳細介紹。

C# 11 預(yù)覽:新的參數(shù)空值檢查

C# 11提供了一種簡化的語法,用于驗證方法的參數(shù)不是null,以及正確拋出ArgumentNullException。

以前可以使用樣板代碼的變體來驗證方法參數(shù)是否為空:

public static void M (string s)
{
    if (s is null)
    {
        throw new ArgumentNullException (nameof (s));
    }
    // Body of the method
}

使用新的參數(shù) null 檢查,可以通過添加!!到參數(shù)名,自動執(zhí)行空值檢查:

public static void M (string s!!)
{
    // Body of the method
}

自動生成的空值檢查代碼將在方法主體的代碼之前執(zhí)行。對于構(gòu)造器,該空值檢查發(fā)生在字段初始化、調(diào)用base構(gòu)造函數(shù)和調(diào)用this構(gòu)造函數(shù)之前。

有關(guān)該新的參數(shù)空值檢查,可在此查看詳細介紹。

如何嘗試預(yù)覽特性

若要嘗試 C# 11 的預(yù)覽特性,請創(chuàng)建一個 C# 項目,并將 LangVersion 設(shè)置為 preview,.csproj文件配置如下:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <LangVersion>preview</LangVersion>
    </PropertyGroup>
</Project>

有關(guān) C# 11 的更多詳細內(nèi)容及新特性的資料請關(guān)注腳本之家其它相關(guān)文章,或通過 GitHub 上的 CSharpLang 存儲庫進行討論!

相關(guān)文章

  • C#中數(shù)組、ArrayList和List三者的區(qū)別詳解及實例

    C#中數(shù)組、ArrayList和List三者的區(qū)別詳解及實例

    這篇文章主要介紹了C#中數(shù)組、ArrayList和List三者的區(qū)別詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • C#操作IIS程序池及站點的創(chuàng)建配置實現(xiàn)代碼

    C#操作IIS程序池及站點的創(chuàng)建配置實現(xiàn)代碼

    最近在做一個WEB程序的安裝包;對一些操作IIS進行一個簡單的總結(jié);主要包括對IIS進行站點的新建以及新建站點的NET版本的選擇,還有針對IIS7程序池的托管模式以及版本的操作
    2013-03-03
  • C#使用IronPython調(diào)用Python的實現(xiàn)

    C#使用IronPython調(diào)用Python的實現(xiàn)

    本文主要介紹了C#使用IronPython調(diào)用Python的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • C#封裝將函數(shù)封裝為接口dll的簡單步驟指南

    C#封裝將函數(shù)封裝為接口dll的簡單步驟指南

    在C#中,封裝函數(shù)為接口并打包成DLL是實現(xiàn)代碼重用和模塊化的常見方法,此過程包括創(chuàng)建類庫項目、定義接口、實現(xiàn)接口、編譯項目生成DLL文件,這種方法適用于需要在多個項目間共享功能時使用,需要的朋友可以參考下
    2024-11-11
  • C#實現(xiàn)關(guān)機功能

    C#實現(xiàn)關(guān)機功能

    這篇文章介紹了C#實現(xiàn)關(guān)機功能的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • c# Winform 程序自動更新實現(xiàn)方法

    c# Winform 程序自動更新實現(xiàn)方法

    Winform程序自動更新我也是第一次做,網(wǎng)上找了自動更新的源碼,后來又根據(jù)在網(wǎng)上看到的一些方法,自己試了很久,最終還是有寫錯誤,所以花了錢讓別人幫忙調(diào)試成功的,下面是我自己搗騰出來的,方便大家借鑒,如果有什么錯誤的地方歡迎指正
    2017-02-02
  • c#轉(zhuǎn)換全角半角方法示例

    c#轉(zhuǎn)換全角半角方法示例

    這篇文章主要介紹了c#如何轉(zhuǎn)換全角半角,大家可以看一下下面的代碼方法,可以參考一下
    2013-12-12
  • c#中利用Tu Share獲取股票交易信息

    c#中利用Tu Share獲取股票交易信息

    這篇文章主要介紹了c#中利用Tu Share獲取股票交易信息,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • C#中如何把dll打包到exe

    C#中如何把dll打包到exe

    這篇文章主要介紹了C#中如何把dll打包到exe問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • c#中oracle的to_date函數(shù)使用方法

    c#中oracle的to_date函數(shù)使用方法

    C#使用參數(shù)傳值方式操作oracle的date字段,主要介紹了oracle的to_date使用方法,大家參考使用吧
    2014-01-01

最新評論

兴化市| 香河县| 凤阳县| 灌阳县| 正阳县| 闵行区| 比如县| 克什克腾旗| 无极县| 门源| 余江县| 双柏县| 江源县| 三穗县| 白朗县| 梨树县| 凤凰县| 广丰县| 新建县| 炎陵县| 讷河市| 汽车| 石棉县| 安阳县| 横山县| 吴忠市| 宁城县| 中江县| 罗田县| 五大连池市| 新河县| 亚东县| 马山县| 营口市| 普格县| 平顺县| 色达县| 大厂| 如东县| 会泽县| 常熟市|