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

c# List和Dictionary常用的操作

 更新時間:2021年04月13日 08:52:46   作者:hello黃先森  
這篇文章主要介紹了c# List和Dictionary常用的操作,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下

本文主要匯總了在開發(fā)過程中,使用List和Dictionary常用的方法,例如增、刪、改、查、排序等等各種常用操作。

在平時的開發(fā)過程中,List和Dictionary是我們經(jīng)常使用到的數(shù)據(jù)結(jié)構(gòu),而且由于本人記性又差有些方法長時間不用就都忘了,所以總結(jié)出此博客,用于記錄和分享一下關(guān)于這兩種數(shù)據(jù)結(jié)構(gòu)的使用方法。

一、List

首先對于這些內(nèi)容最權(quán)威和完整介紹的地方就是微軟的官方文檔,里面全面且詳細的介紹了Lits的所有屬性及方法,經(jīng)常查看官方文檔是一個非常好的習慣。本文將會總結(jié)出在日常開發(fā)過程中相對常用的一些方法同時會配上示例。

1.添加方法:

Add(T)---將對象添加到List結(jié)尾處。

AddRange(IEnumerable<T>)---將指定集合的元素添加到List末尾。

Insert(int32,T)---將元素T插入到List指定索引處。

InsertRange(int32,IEnumerable<T>)---將集合中的元素插入到List的指定索引處。

2.刪除方法:

Clear()---從List中移除所有元素。

Remove(T)--從List中移除特定對象的第一個匹配項。(請注意值類型與引用類型)

RemoveAll(Preaicate<T>)---移除與指定謂詞所定義的條件相匹配的所有元素。例:

static void Main(string[] args)
        {
            List<test> a = new List<test>();
            for (int i = 0; i < 10; i++)
            {
                a.Add(new test(i, "張先生"));
            }

            a.RemoveAll(x => x.ID > 5);
        }

        public class test
        {
            public test(int a, string b)
            {
                ID = a;
                Name = b;
            }
            public int ID { get; set; }
            public string Name { get; set; }
        }

結(jié)果:刪除掉了ID大于5的全部元素。

RemoveAt(Int32)---移除List的指定索引處的元素。

RemoveRange(Int32,Int32)---從List中移除一系列元素。

3.搜索方法:

對于List的搜索方法建議使用Linq查詢表達式或者Lambda表達式的方式,可以參考博文:C# LINQ查詢表達式用法對應LAMBDA表達式

IndexOf(T)---搜索指定的對象,并返回整個List中第一個匹配項從零開始的索引。

IndexOf(T,Int32)---搜索指定對象并返回List中指定索引到最后一個元素這部分元素中第一個匹配項的從零開始的索引。

IndexOf(T,Int32,Int32)---搜索指定對象并返回List中從指定索引開始并包含指定元素的這部分元素中第一個匹配項的從零開始索引。

Find(Preaicate<T>)---搜索與指定謂詞所定義的條件相匹配的元素,并返回整個List中的第一個匹配元素。

FindAll(Preaicate<T>)---搜索與指定謂詞定義的條件匹配的所有元素。

FindIndex(Preaicate<T>)---搜索與指定謂詞所定義的條件相匹配的元素,并返回整個 List<T> 中第一個匹配元素的從零開始的索引。

FindIndex(Int32,Preaicate<T>)---搜索與指定謂詞所定義的條件相匹配的元素,并返回 List<T> 中從指定索引到最后一個元素的元素范圍內(nèi)第一個匹配項的從零開始的索引。

FindIndex(In32,Int32,Preaicate<T>)---搜索與指定謂詞所定義的條件相匹配的一個元素,并返回 List<T> 中從指定的索引開始、包含指定元素個數(shù)的元素范圍內(nèi)第一個匹配項的從零開始的索引。例:

static void Main(string[] args)
        {
            List<test> a = new List<test>();
            for (int i = 0; i < 10; i++)
            {
                a.Add(new test(i, "張先生"));
            }
            int res = a.FindIndex(x => x.ID == 3);
            Console.WriteLine(res);
        }

        public class test
        {
            public test(int a, string b)
            {
                ID = a;
                Name = b;
            }
            public int ID { get; set; }
            public string Name { get; set; }
        }

結(jié)果:控制臺打印的結(jié)果為3。

4.修改方法:

對于當前List是支持通過索引的方式進行修改操作的,操作方式類似于數(shù)組。

5.排序方法:

請參考博文C#LINQ查詢表達式用法對應LAMBDA表達式

Sort()---使用默認比較器對整個 List<T> 中的元素進行排序。

對于List<T>類型的List進行排序,如果想要使用Sort()方法的話,可以通過匿名委托的方式實現(xiàn),個人建議實現(xiàn)排序功能使用Linq的方式最好。對于Sort方法可以進行一下了解。請參考如下代碼

public MainWindow()
        {
            InitializeComponent();

            List<test> a = new List<test>();

            a.Add(new test()
            {
                a = 1,
                b = ""
            });
            a.Add(new test()
            {
                a = 4,
                b = ""
            });
            a.Add(new test()
            {
                a = 2,
                b = ""
            });
            a.Add(new test()
            {
                a = 3,
                b = ""
            });
            a.Add(new test()
            {
                a = 9,
                b = ""
            });
            a.Add(new test()
            {
                a = 7,
                b = ""
            });
            a.Add(new test()
            {
                a = 6,
                b = ""
            });

            a.Sort((left, right) =>
            {
                if (left.a > right.a)
                    return 1;
                else if (left.a == right.a)
                    return 0;
                else
                    return -1;
            });
        }

        class test
        {
            public int a;
            public string b;
        }

通過以上方式可以實現(xiàn)用Sort方法對List<T>類型進行排序。

6.其它方法:

Exists(Predicate<T>)---確定 List<T> 是否包含與指定謂詞定義的條件匹配的元素。

Contains(T)---確定某元素是否在 List<T> 中。

以上兩個方法使用代碼如下:

public MainWindow()
        {
            InitializeComponent();

            List<test> a = new List<test>();

            a.Add(new test()
            {
                a = 1,
                b = ""
            });

            a.Add(new test()
            {
                a = 4,
                b = ""
            });

            var aa = new test()
            {
                a = 55,
                b = "11"
            };
            a.Add(aa);

            var res1 = a.Exists(x => x.a == 55);
            var res2 = a.Contains(aa);
        }

        class test
        {
            public int a;
            public string b;
        }

運行結(jié)果,res1=true;res2=true

二、Dictionary

 介紹最完整詳細的仍然是官方文檔。

1.添加方法

 Add(TKey,TValue)---將指定的鍵和值添加到字典中。

TryAdd(Tkey,TValue)---嘗試將指定的鍵和值添加到字典中。

2.刪除方法

Clear()---將所有鍵和值從 Dictionary<TKey,TValue> 中移除。

Remove(TKey)---從 Dictionary<TKey,TValue> 中移除所指定的鍵的值。

Remove(TKey,TVlue)---從 Dictionary<TKey,TValue> 中刪除具有指定鍵的值,并將元素復制到 value 參數(shù)。

3.搜索方法

Item[TKey]---獲取或設置與指定的鍵關(guān)聯(lián)的值。

可以使用Where方法實現(xiàn),代碼如下:

Dictionary<string, int> a = new Dictionary<string, int>();
            a.Add("1", 1);
            a.Add("2", 2);
            a.Add("3", 3);
            a.Add("4", 4);
            var res = a.Where(x => x.Key == "3").ToDictionary(x=>x.Key,y=>y.Value);

運行結(jié)果res是字典類型"3",3

4.修改方法

Item[TKey]---獲取或設置與指定的鍵關(guān)聯(lián)的值。通常使用字典的Key來修改字典的Value

字典類型的Key一旦定義則無法修改,如果想修改只能刪除重新添加。

5.排序方法

一般字典類型主要是使用Key來進行索引,所以對于字典這種類數(shù)據(jù)型進行排序是無意義的,所以字典本身也沒有sort方法。

如果非要排序也是可以實現(xiàn)通過Linq即可實現(xiàn),代碼如下:

Dictionary<string, int> a = new Dictionary<string, int>();
            a.Add("4", 1);
            a.Add("1", 2);
            a.Add("3", 3);
            a.Add("5", 4);
           
            var res1 = a.OrderBy(x=>x.Key).ToDictionary(x => x.Key, x => x.Value);
            var res2 = a.OrderByDescending(x=>x.Key).ToDictionary(x => x.Key, x => x.Value);

運行結(jié)果res1和res2分別實現(xiàn)按照字典key的升序排序和降序排序。

6.其它方法

ContainsKey(TKey)---確定是否 Dictionary<TKey,TValue> 包含指定鍵。

ContainsKey(TValue)---確定 Dictionary<TKey,TValue> 是否包含特定值。

以上就是c# List和Dictionary常用的操作的詳細內(nèi)容,更多關(guān)于c# List和Dictionary的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#無限參數(shù)的寫法

    C#無限參數(shù)的寫法

    這篇文章主要介紹了C#無限參數(shù)的寫法,通過循環(huán)遍歷再結(jié)合paras.Add方法實現(xiàn)無限參數(shù)的功能,是比較實用的技巧,需要的朋友可以參考下
    2014-12-12
  • C#中GDI+繪制圓弧及圓角矩形等比縮放的繪制

    C#中GDI+繪制圓弧及圓角矩形等比縮放的繪制

    這篇文章主要介紹了C#中GDI+繪制圓弧及圓角矩形等比縮放的繪制,文章圍繞主題展開詳細的內(nèi)容戒殺,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Js中的substring,substr與C#中的Substring比較

    Js中的substring,substr與C#中的Substring比較

    本篇文章主要是對Js中的substring,substr與C#中的Substring進行了比較。需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • 配置C#的系統(tǒng)環(huán)境變量的方法

    配置C#的系統(tǒng)環(huán)境變量的方法

    配置C#的系統(tǒng)環(huán)境變量的方法...
    2007-03-03
  • C#枚舉類型與位域枚舉Enum

    C#枚舉類型與位域枚舉Enum

    這篇文章介紹了C#中的枚舉類型與位域枚舉Enum,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#使用MathNet生成矩陣并打印矩陣元素

    C#使用MathNet生成矩陣并打印矩陣元素

    MathNet.Numerics中提供了線性代數(shù)、微積分、特殊函數(shù)、概率論、隨機函數(shù)、插值、最優(yōu)化等一系列功能,是.net技術(shù)中首選的數(shù)值計算包,本文給大家介紹了C#如何使用MathNet生成矩陣并打印矩陣元素,文中通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2023-12-12
  • C#/VB.NET實現(xiàn)PPT或PPTX轉(zhuǎn)換為圖像功能

    C#/VB.NET實現(xiàn)PPT或PPTX轉(zhuǎn)換為圖像功能

    由于大多數(shù)便攜式設備支持瀏覽圖片而不支持瀏覽PowerPoint 文件,所以相比較而言,圖像對于用戶而言更加友好。本文將利用C#/VB.NET實現(xiàn)PPT或PPTX轉(zhuǎn)換為圖像功能,需要的可以參考一下
    2022-08-08
  • Unity實現(xiàn)微信聊天框界面

    Unity實現(xiàn)微信聊天框界面

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)微信聊天框界面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C#中const用法詳解

    C#中const用法詳解

    這篇文章主要介紹了C#中const用法,實例分析了C#中const的用法及使用技巧,并對比分析了readonly關(guān)鍵字與const關(guān)鍵字的不同,需要的朋友可以參考下
    2014-11-11
  • C# 實現(xiàn)顏色漸變窗體控件詳細講解

    C# 實現(xiàn)顏色漸變窗體控件詳細講解

    這篇文章主要介紹了C# 實現(xiàn)顏色漸變窗體控件詳細講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論