欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#集合之不變集合的用法

 更新時(shí)間:2022年04月12日 09:49:27   作者:Ruby_Lu  
這篇文章介紹了C#集合之不變集合的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

如果對(duì)象可以改變其狀態(tài),就很難在多個(gè)同時(shí)運(yùn)行的任務(wù)中使用。這些集合必須同步。如果對(duì)象不能改變器狀態(tài),就很容易在多個(gè)線程中使用。
Microsoft提供了一個(gè)新的集合庫(kù):Microsoft Immutable Collection。顧名思義,它包含不變的集合類————創(chuàng)建后不能改變的集合類。該類在System.Collection.Immutable中定義。

//使用靜態(tài)的Create方法創(chuàng)建該數(shù)組,Create方法被重載,可以傳遞任意數(shù)量的元素
          ImmutableArray<string> a1 = ImmutableArray.Create<string>();
          //Add 方法不會(huì)改變不變集合本身,而是返回一個(gè)新的不變集合
          ImmutableArray<string> a2 = a1.Add("Williams");
          //可以一次調(diào)用多個(gè)Add方法
          ImmutableArray<string> a3 = a2.Add("Ferrari").Add("Mercedes").Add("Red Bull Racing");
          foreach (var item in a3)
          {
            Console.WriteLine(item);
          }

在使用不變數(shù)組的每個(gè)階段,都沒有復(fù)制完整的集合。相反,不變類型使用了共享狀態(tài),僅在需要時(shí)復(fù)制集合。
但是,先填充集合,再將它變成不變的數(shù)組會(huì)更高效(使用ToImmutableList方法)。需要進(jìn)行一些處理時(shí),可以再變?yōu)榭勺兊募希ㄊ褂肨oBuilder方法)。使用不變集合的提供的構(gòu)建器ImmutableList<Account>.Builder。

List<Account> accounts = new List<Account>() {
        new Account {
          Name = "Scrooge McDuck", 
          Amount = 667377678765m
        },
        new Account {
          Name = "Donald Duck",
          Amount = -200m
        },
       new Account {
         Name = "Ludwig von Drake",
         Amount = 20000m
        }};
      ImmutableList<Account> immutableAccounts = accounts.ToImmutableList();

      ImmutableList<Account>.Builder builder = immutableAccounts.ToBuilder();
      for (int i = 0; i < builder.Count; i++)
      {
        Account a = builder[i];
        if (a.Amount > 0)
        {
          builder.Remove(a);
        }
      }

      ImmutableList<Account> overdrawnAccounts = builder.ToImmutable();


      foreach (var item in overdrawnAccounts)
      {
        Console.WriteLine("{0} {1}", item.Name, item.Amount);
      }
      
      public class Account
      {
        public string Name { get; set; }
        public decimal Amount { get; set; }
      }

只讀集合(http://www.dbjr.com.cn/article/244084.htm)提供了集合的只讀視圖。在不使用只讀視圖訪問集合的情況下,該集合仍可以修改。而永遠(yuǎn)不能改變不變的集合。

到此這篇關(guān)于C#集合之不變集合的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • c#實(shí)現(xiàn)metro文件壓縮解壓示例

    c#實(shí)現(xiàn)metro文件壓縮解壓示例

    這篇文章主要介紹了c#實(shí)現(xiàn)metro文件壓縮解壓示例,實(shí)現(xiàn)了zip中增加一張新圖片、刪除文件的方法,需要的朋友可以參考下
    2014-03-03
  • C#筆記之EF Code First 數(shù)據(jù)模型 數(shù)據(jù)遷移

    C#筆記之EF Code First 數(shù)據(jù)模型 數(shù)據(jù)遷移

    EF 中 Code First 的數(shù)據(jù)遷移網(wǎng)上有很多資料,我這份并沒什么特別。Code First 創(chuàng)建視圖網(wǎng)上也有很多資料,但好像很麻煩,而且親測(cè)好像是無效的方法(可能是我太笨,沒搞成功),我摸索出了一種簡(jiǎn)單有效的方法,這里分享給大家
    2021-09-09
  • C#中自定義事件和委托實(shí)例

    C#中自定義事件和委托實(shí)例

    這篇文章主要介紹了C#中自定義事件和委托實(shí)例的,本文先是闡述了事件的原理,然后講解了事件和委托的步驟,并給出了實(shí)例代碼,需要的朋友可以參考下
    2015-01-01
  • C#實(shí)現(xiàn)俄羅斯方塊基本功能

    C#實(shí)現(xiàn)俄羅斯方塊基本功能

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)俄羅斯方塊的基本功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C#實(shí)現(xiàn)抓取和分析網(wǎng)頁類實(shí)例

    C#實(shí)現(xiàn)抓取和分析網(wǎng)頁類實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)抓取和分析網(wǎng)頁類,實(shí)例分析了C#抓取及分析網(wǎng)頁中文本及連接的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • C#處理datagridview虛擬模式的方法

    C#處理datagridview虛擬模式的方法

    這篇文章主要介紹了C#處理datagridview虛擬模式的方法,實(shí)例分析了C#中datagridview的使用技巧,需要的朋友可以參考下
    2015-06-06
  • C# 操作 access 數(shù)據(jù)庫(kù)的實(shí)例代碼

    C# 操作 access 數(shù)據(jù)庫(kù)的實(shí)例代碼

    這篇文章主要介紹了C# 操作 access 數(shù)據(jù)庫(kù)的實(shí)例代碼,需要的朋友可以參考下
    2018-03-03
  • 淺談C# StringBuilder內(nèi)存碎片對(duì)性能的影響

    淺談C# StringBuilder內(nèi)存碎片對(duì)性能的影響

    這篇文章主要介紹了淺談StringBuilder內(nèi)存碎片對(duì)性能的影響,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • C#實(shí)現(xiàn)兩個(gè)日期比較大小

    C#實(shí)現(xiàn)兩個(gè)日期比較大小

    這篇文章主要為大家詳細(xì)介紹了C#中實(shí)現(xiàn)兩個(gè)日期比較大小的常見方法,文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-12-12
  • C# 使用Proxy代理請(qǐng)求資源的方法步驟

    C# 使用Proxy代理請(qǐng)求資源的方法步驟

    這篇文章主要介紹了C# 使用Proxy代理請(qǐng)求資源的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03

最新評(píng)論