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

C#12中的Collection expressions集合表達(dá)式語(yǔ)法糖詳解

 更新時(shí)間:2023年11月20日 11:16:18   作者:chester·chen  
C#12中引入了新的語(yǔ)法糖來(lái)創(chuàng)建常見的集合,并且可以使用..來(lái)解構(gòu)集合,將其內(nèi)聯(lián)到另一個(gè)集合中,下面就跟隨小編一起學(xué)習(xí)一下C#12中這些語(yǔ)法糖的使用吧

C#12中引入了新的語(yǔ)法糖來(lái)創(chuàng)建常見的集合。并且可以使用..來(lái)解構(gòu)集合,將其內(nèi)聯(lián)到另一個(gè)集合中。

支持的類型

  • 數(shù)組類型,例如 int[]。
  • System.Span<T> 和 System.ReadOnlySpan<T>。
  • 支持常見泛型集合,例如 System.Collections.Generic.List<T>。

集合表達(dá)式使用

以下展示了如何使用集合表達(dá)式

static void Main(string[] args)
{
    List<string> names1 = ["one", "two"];
    List<string> names2 = ["three", "four"];
    List<List<string>> names3 = [["one", "two"], ["three", "four"]];
    List<List<string>> names4 = [names1, names2];
}

可以看出使用方法十分簡(jiǎn)單

集合表達(dá)式解構(gòu)

在C#12中通過(guò)..即可將一個(gè)集合解構(gòu),并將其作為另一個(gè)集合的元素。

static void Main(string[] args)
{
    List<string> names1 = ["one", "two"];
    List<string> names2 = ["three", "four"];
    List<string> name = [.. names1, .. names2];
}

自定義類型支持集合表達(dá)式

類型通過(guò)編寫 Create() 方法,和對(duì)集合類型應(yīng)用System.Runtime.CompilerServices.CollectionBuilderAttribute 選擇加入集合表達(dá)式支持。以下是個(gè)例子

[CollectionBuilder(typeof(LineBufferBuilder), "Create")]
public class LineBuffer : IEnumerable<char>
{
    private readonly char[] _buffer = new char[80];

    public LineBuffer(ReadOnlySpan<char> buffer)
    {
        int number = (_buffer.Length < buffer.Length) ? _buffer.Length : buffer.Length;
        for (int i = 0; i < number; i++)
        {
            _buffer[i] = buffer[i];
        }
    }

    public IEnumerator<char> GetEnumerator() => _buffer.AsEnumerable<char>().GetEnumerator();
    IEnumerator IEnumerable.GetEnumerator() => _buffer.GetEnumerator();
}

internal static class LineBufferBuilder
{
    internal static LineBuffer Create(ReadOnlySpan<char> values) => new LineBuffer(values);
}

internal class Program
{
    static void Main(string[] args)
    {
        LineBuffer line = ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!'];
    }
}

首先,需要?jiǎng)?chuàng)建一個(gè)包含 Create 方法的類:LineBufferBuilder。LineBufferBuilder.Create方法必須返回 LineBuffer 對(duì)象,并且必須采用 ReadOnlySpan<char> 類型的單個(gè)參數(shù)。 

最后,必須將 CollectionBuilderAttribute添加到 LineBuffer 類聲明。其中,第一個(gè)參數(shù)提供生成器類的名稱, 第二個(gè)特性提供生成器方法的名稱。

這樣一個(gè)自定義的類就可以支持集合表達(dá)式了。

到此這篇關(guān)于C#12中的Collection expressions集合表達(dá)式語(yǔ)法糖詳解的文章就介紹到這了,更多相關(guān)C#12語(yǔ)法糖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#學(xué)習(xí)筆記整理_深入剖析構(gòu)造函數(shù)、析構(gòu)函數(shù)

    C#學(xué)習(xí)筆記整理_深入剖析構(gòu)造函數(shù)、析構(gòu)函數(shù)

    下面小編就為大家?guī)?lái)一篇C#學(xué)習(xí)筆記整理_深入剖析構(gòu)造函數(shù)、析構(gòu)函數(shù)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • C#代碼實(shí)現(xiàn)將PDF轉(zhuǎn)換為PDF線性化格式

    C#代碼實(shí)現(xiàn)將PDF轉(zhuǎn)換為PDF線性化格式

    PDF 線性化是一種對(duì) PDF 文件進(jìn)行優(yōu)化的方式,本文將為大家詳細(xì)介紹如何使用C#代碼將普通 PDF 轉(zhuǎn)換為線性化 PDF,感興趣的小伙伴可以參考一下
    2026-04-04
  • WPF利用DrawingContext實(shí)現(xiàn)繪制溫度計(jì)

    WPF利用DrawingContext實(shí)現(xiàn)繪制溫度計(jì)

    這篇文章主要為大家詳細(xì)介紹了如何利用WPF和DrawingContext實(shí)現(xiàn)繪制溫度計(jì),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下
    2022-09-09
  • C#中using的使用方式詳解

    C#中using的使用方式詳解

    這篇文章主要介紹了C#中using的使用方式方式詳解,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • 詳解C#如何使用屏障實(shí)現(xiàn)多線程并發(fā)操作保持同步

    詳解C#如何使用屏障實(shí)現(xiàn)多線程并發(fā)操作保持同步

    這篇文章主要為大家詳細(xì)介紹了C#如何使用屏障實(shí)現(xiàn)多線程并發(fā)操作保持同步,文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下
    2024-01-01
  • C#通過(guò)流寫入數(shù)據(jù)到文件的方法

    C#通過(guò)流寫入數(shù)據(jù)到文件的方法

    這篇文章主要介紹了C#通過(guò)流寫入數(shù)據(jù)到文件的方法,涉及C#通過(guò)字節(jié)流讀寫文件的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • C#實(shí)現(xiàn)頁(yè)面GZip或Deflate壓縮的方法

    C#實(shí)現(xiàn)頁(yè)面GZip或Deflate壓縮的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)頁(yè)面GZip或Deflate壓縮的方法,涉及C#通過(guò)GZipStream與DeflateStream實(shí)現(xiàn)頁(yè)面壓縮的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C# OCR實(shí)現(xiàn)文字識(shí)別功能

    C# OCR實(shí)現(xiàn)文字識(shí)別功能

    OCR,中文叫做光學(xué)字符識(shí)別。它是利用光學(xué)技術(shù)和計(jì)算機(jī)技術(shù)把印在或?qū)懺诩埳系奈淖肿x取出來(lái),并轉(zhuǎn)換成一種計(jì)算機(jī)能夠接受、人又可以理解的格式。本文將利用OCR實(shí)現(xiàn)文字識(shí)別功能,感興趣的可以了解一下
    2022-11-11
  • C#生成DLL文件的方法小結(jié)

    C#生成DLL文件的方法小結(jié)

    這篇文章主要介紹了C#生成DLL文件的方法小結(jié),需要的朋友可以參考下
    2015-07-07
  • C#之繼承實(shí)現(xiàn)

    C#之繼承實(shí)現(xiàn)

    本文詳細(xì)講解了C#之繼承的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04

最新評(píng)論

宁明县| 九台市| 阿尔山市| 贵溪市| 宁强县| 鄂尔多斯市| 宣恩县| 宜黄县| 封丘县| 陇南市| 长汀县| 穆棱市| 勃利县| 忻州市| 敖汉旗| 龙江县| 阿巴嘎旗| 新沂市| 庆元县| 鹤岗市| 乌海市| 佛坪县| 花垣县| 垫江县| 滕州市| 台南市| 宾阳县| 通海县| 东明县| 芜湖市| 威信县| 上杭县| 凉山| 阿荣旗| 始兴县| 涟源市| 象州县| 绥德县| 武邑县| 铜山县| 涡阳县|