<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          C#11新特性預(yù)覽

          共 2614字,需瀏覽 6分鐘

           ·

          2022-03-12 20:30


          ??? 2020年2月隨著.NET 7 Preview 1的發(fā)布,Visual Studio 17.1(Visual Studio 2022 Update 1)和.NET SDK 6.0.200已經(jīng)包含C# 11的預(yù)覽功能!可以更新 Visual Studio 或下載最新的 .NET SDK 以獲取這些功能。


          C#11有那些新功能呢?下面簡(jiǎn)單介紹一下


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

          C# 支持兩種樣式的內(nèi)插字符串:逐字和非逐字內(nèi)插字符串。它們之間的主要區(qū)別在于,非逐字內(nèi)插字符串不能在其文本段中包含換行符,而必須改用轉(zhuǎn)義(如 \r\n)。逐字內(nèi)插字符串可以在其文本段中包含換行符,并且不轉(zhuǎn)義換行符或其他字符(""除外,用于轉(zhuǎn)義引號(hào)本身)。

          而C#11允許在內(nèi)插字符串的“插值表達(dá)式”中換行,如下示例:

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


          以上情況將導(dǎo)致 C# 10 中的編譯器錯(cuò)誤,在 C# 11 預(yù)覽版中是合法的。


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

          ? ?新的列表模式允許您與列表和數(shù)組進(jìn)行匹配。您可以匹配元素,也可以選擇包括與零個(gè)或多個(gè)元素匹配的切片圖案。使用切片模式,可以丟棄或捕獲零個(gè)或多個(gè)元素。

           列表模式的語(yǔ)法是用方括號(hào)括起來(lái)的值,切片模式的語(yǔ)法是兩個(gè)點(diǎn) ..。切片模式后面可以跟著另一個(gè)列表模式,比如 var 模式來(lái)捕獲切片內(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 };

           要探索列表模式,請(qǐng)參考:

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

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


          WriteLine(CheckSwitch(new[] { 1, 2, 10 }));          // prints 1WriteLine(CheckSwitch(new[] { 1, 2, 7, 3, 3, 10 })); // prints 1WriteLine(CheckSwitch(new[] { 1, 2 }));              // prints 2WriteLine(CheckSwitch(new[] { 1, 3 }));              // prints 3WriteLine(CheckSwitch(new[] { 1, 3, 5 }));           // prints 4WriteLine(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ù)和可編制索引的類(lèi)型,這意味著它具有可訪(fǎng)問(wèn)的或?qū)傩裕饕骶哂?or 參數(shù)。切片模式適用于任何可數(shù)和可切片的類(lèi)型,這意味著它具有將 a 作為參數(shù)的可訪(fǎng)問(wèn)索引器,或者具有具有兩個(gè)參數(shù)的可訪(fǎng)問(wèn)方法。

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


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

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


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


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

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

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

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


          總結(jié)

          Visual Studio 17.1 和 .NET SDK 6.0.200 提供了對(duì) C# 11 的早期版本。您可以使用參數(shù)空值檢查、列表模式和內(nèi)插字符串有關(guān)該新的參數(shù)空值檢查等。請(qǐng)下載相關(guān)SDK體驗(yàn)吧!


          出處:https://devblogs.microsoft.com/dotnet/category/csharp/


          支持小微:


          299元購(gòu)買(mǎi)5000+的.NET架構(gòu)課程,還送初級(jí)中級(jí)課程!

          騰訊云 爆款2核2G云服務(wù)器首年40,2G4核云服務(wù)器298元/3年

          鏈接:https://curl.qcloud.com/1VVs7OBH


          右下角,您點(diǎn)一下在看圖片c46b68f710bfe97b297eb4a3ed82f36c.webp

          小微工資漲1毛

          商務(wù)合作QQ:185601686



          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  岛国av在线观看网址国产 | 国产精品高潮呻吟 | 日本黄色片网站视频 | 国产精品一色哟哟哟 | 亚洲福利网站 |