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

c# List和Dictionary常用的操作

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

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

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

一、List

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

1.添加方法:

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

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

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

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

2.刪除方法:

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

Remove(T)--從List中移除特定對(duì)象的第一個(gè)匹配項(xiàng)。(請(qǐng)注意值類型與引用類型)

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.搜索方法:

對(duì)于List的搜索方法建議使用Linq查詢表達(dá)式或者Lambda表達(dá)式的方式,可以參考博文:C# LINQ查詢表達(dá)式用法對(duì)應(yīng)LAMBDA表達(dá)式

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

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

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

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

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

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

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

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

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é)果:控制臺(tái)打印的結(jié)果為3。

4.修改方法:

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

5.排序方法:

請(qǐng)參考博文C#LINQ查詢表達(dá)式用法對(duì)應(yīng)LAMBDA表達(dá)式

Sort()---使用默認(rèn)比較器對(duì)整個(gè) List<T> 中的元素進(jìn)行排序。

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

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;
        }

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

6.其它方法:

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

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

以上兩個(gè)方法使用代碼如下:

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;
        }

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

二、Dictionary

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

1.添加方法

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

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

2.刪除方法

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

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

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

3.搜索方法

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

可以使用Where方法實(shí)現(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);

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

4.修改方法

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

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

5.排序方法

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

如果非要排序也是可以實(shí)現(xiàn)通過Linq即可實(shí)現(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);

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

6.其它方法

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

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

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

相關(guān)文章

最新評(píng)論

南华县| 凤山县| 松溪县| 洱源县| 黄浦区| 达日县| 芷江| 运城市| 安西县| 饶平县| 四川省| 改则县| 东乌珠穆沁旗| 松阳县| 岚皋县| 黎平县| 金昌市| 中宁县| 毕节市| 郑州市| 安吉县| 鹿泉市| 璧山县| 五莲县| 克拉玛依市| 沁源县| 镇康县| 鹤岗市| 白银市| 岳阳县| 镇宁| 延川县| 全南县| 陈巴尔虎旗| 长治市| 高唐县| 门源| 保山市| 东城区| 连江县| 北海市|