【C#进阶】C# 集合类

这篇具有很好参考价值的文章主要介绍了【C#进阶】C# 集合类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

序号 系列文章
16 【C#进阶】C# 索引器
17 【C#进阶】C# 委托
18 【C#进阶】C# 事件

前言

🌄 hello大家好啊,我是哈桑,本章为大家介绍 C# 中的集合类。


1、集合类是什么

集合类是专门用于数据存储和检索的类。在这些类中实现了对列表、队列、哈希表等数据结构的封装以及对操作数据的支持。当在项目中需要对不同场景的数据进存储和操作时,就会使用到集合类。选择合适集合对象,能够在一定程度提升代码的性能和降低内存占用。

在 .NET 框架中,提供了一个叫 System.Collections 的命名空间,其中包含定义各种对象集合(包括但不限于列表、队列、位数组、哈希表和字典)的类和接口。在 C# 中,当我们需要引用这其中的对象集合时,就需要引入 System.Collections 的命名空间。

System.Collections 命名空间部分源码:

c# 集合类,C#/.NET系列文章,c#,开发语言,.net,微软,.netcore

接下来列举在 System.Collections 命名空间中常用的集合类以及用法:

2、动态数组(ArrayList)

区别于常见的静态数组,动态数组指的是在声明时不必确定大小的数组,在实际的项目中,动态数组基本上可以取代一个静态数组的功能。操作动态数组的大小时会根据动态增加的元素来实现 ILIst 接口,也就是可以在任何时候改变数组的大小。动态数组有着灵活、方便和高效利用存储空间的优点。

示例代码:

using System;
using System.Collections;

public class SamplesArrayList
{
    public static void Main()
    {
        // 创建并初始化一个新的数组列表。 
        ArrayList myAL = new ArrayList();

        myAL.Add("Hello");
        myAL.Add("World");
        myAL.Add("!");

        PrintAttribute(myAL);  
    }

    // 输出动态数组的值
    public static void PrintAttribute(ArrayList myList)
    {
        // 显示数组列表的属性和值。 
        Console.WriteLine("动态数组myAL");
        Console.WriteLine("数组大小:{0}", myList.Count);
        Console.WriteLine("数组容量:{0}", myList.Capacity);
        Console.Write("数组元素值:"); 

        foreach (Object obj in myList)
        {
            Console.Write($"{obj}");
        }
        Console.ReadLine(); 
    }
}

运行结果:
c# 集合类,C#/.NET系列文章,c#,开发语言,.net,微软,.netcore
以上例中,演示了如何创建和初始化一个动态数组以及如何使用数组属性和显示其元素值。

ArrayList 类中一些常用的属性:

属性名 描述
Capacity 获取或设置 ArrayList 可包含的元素数。
Count 获取 ArrayList 中实际包含的元素数。
IsFixedSize 获取一个值,该值指示 ArrayList 是否具有固定大小。
IsReadOnly 获取一个值,该值指示 ArrayList 是否为只读。
Item[Int32] 获取或设置指定索引处的元素。

ArrayList 类中一些常用的方法:

方法名 描述
Add(Object) 将对象添加到 ArrayList 的结尾处。
AddRange(ICollection) 将 ICollection 的元素添加到 ArrayList 的末尾。
BinarySearch(Object) 使用默认的比较器在整个已排序的 ArrayList 中搜索元素,并返回该元素从零开始的索引。
Clear() 从 ArrayList 中移除所有元素。
Clone() 创建 ArrayList 的浅表副本。
Contains(Object) 确定某元素是否在 ArrayList 中。
CopyTo(Array) 从目标数组的开头开始,将整个 ArrayList 复制到兼容的一维 Array。
Equals(Object) 确定指定对象是否等于当前对象。(继承自 Object)
FixedSize(ArrayList) 返回具有固定大小的 ArrayList 包装。
GetRange(Int32, Int32) 返回一个 ArrayList,它表示源 ArrayList 中的元素子集。
GetType() 获取当前实例的 Type。(继承自 Object)
IndexOf(Object) 搜索指定的 Object,并返回整个 ArrayList 中第一个匹配项的从零开始的索引。
Insert(Int32, Object) 将元素插入 ArrayList 的指定索引处。
InsertRange(Int32, ICollection) 将集合中的元素插入 ArrayList 的指定索引处。
LastIndexOf(Object) 在整个 ArrayList 中搜索指定的 Object,并返回最后一个匹配项的从零开始的索引。
ReadOnly(ArrayList) 返回只读的 ArrayList 包装。
Remove(Object) 从 ArrayList 中移除特定对象的第一个匹配项。
RemoveAt(Int32) 移除 ArrayList 的指定索引处的元素。
RemoveRange(Int32, Int32) 从 ArrayList 中移除一系列元素。
Reverse() 将整个 ArrayList 中元素的顺序反转。
Reverse(Int32, Int32) 将指定范围中元素的顺序反转。
Sort() 对整个 ArrayList 中的元素进行排序。
ToArray() 将 ArrayList 的元素复制到新 Object 数组中。
ToString() 返回表示当前对象的字符串。(继承自 Object)

3、压缩数组(BitArray)

压缩数组是一个紧凑型的位值数组,这些值以布尔值得形式表示,其中 true 表示此位为开 (1),false 表示此位为关 (0)。 当一个数组中大部分元素为0或者1时,又或者为同一个值时,就可以使用压缩数组来表示。

示例代码:

using System;
using System.Collections;

public class SamplesBitArray
{
    public static void Main()
    {
        // 创建并初始化压缩数组 bitarray。 
        BitArray myBA1 = new BitArray(15);

        BitArray myBA2 = new BitArray(5, false);

        byte[] myBytes = new byte[6] {1, 2, 3, 4, 5, 6};
        // 传入参数为一个数组时 
        BitArray myBA3 = new BitArray(myBytes);

        bool[] myBools = new bool[5] { true, false, true, true, false };
        BitArray myBA4 = new BitArray(myBools);

        //显示BitArrays的属性和值。 
        Console.WriteLine("myBA1");
        Console.WriteLine("元素个数:{0}", myBA1.Count);
        Console.WriteLine("数组容量:{0}", myBA1.Length);
        Console.WriteLine("数组元素值:");

        PrintValues(myBA1, 8);

        Console.WriteLine("myBA2");
        Console.WriteLine("元素个数:{0}", myBA2.Count);
        Console.WriteLine("数组容量:{0}", myBA2.Length);
        Console.WriteLine("数组元素值:");
        PrintValues(myBA2, 8);

        Console.WriteLine("myBA3");
        Console.WriteLine("元素个数:{0}", myBA3.Count);
        Console.WriteLine("数组容量:{0}", myBA3.Length);

        Console.WriteLine("数组元素值:");
        PrintValues(myBA3, 8);

        Console.WriteLine("myBA4");
        Console.WriteLine("元素个数:{0}", myBA4.Count);
        Console.WriteLine("数组容量:{0}", myBA4.Length);
        Console.WriteLine("数组元素值:");
        PrintValues(myBA4, 8);
    }

    public static void PrintValues(IEnumerable myList, int myWidth)
    {
        // myWidth表示每行输出得元素个数 
        int i = myWidth;
        foreach (Object obj in myList)
        {
            if (i <= 0)
            {
                i = myWidth;
                Console.WriteLine();
            }
            i--;
            Console.Write("{0,8}", obj);
        }   
        Console.WriteLine();
    }
}

运行结果:
c# 集合类,C#/.NET系列文章,c#,开发语言,.net,微软,.netcore
在上例中,我们可以实例化 BitArray 类的对象,传入不同类型的参数生成不同压缩数组。若传入的是一个整数,则表示该数组的元素个数和容量,默认位值为 false,可以指定第二参数修改默认值。若传入的是一个整数数组,则表示输出数组元素对应的位表达,例如1的位表达为:True False False False False False False False,其中 True 表示1,False 表示0。当输出的参数为一个布尔数组时,则直接输出布尔数组表示对应字节表达。

BitArray 类中一些常用的属性:

属性名 描述
Count 获取 BitArray 中包含的元素数。
IsReadOnly 获取一个值,该值指示 BitArray 是否为只读。
Item[Int32] 获取或设置 BitArray 中特定位置的位的值。
Length 获取或设置 BitArray 中的元素数。

BitArray 类中一些常用的方法:

方法名 描述
And(BitArray) 在当前 BitArray 对象中的元素和指定数组中的相应元素之间执行按位“与”运算。 将修改当前 BitArray 对象,以存储按位“与”运算的结果。
Clone() 创建 BitArray 的浅表副本。
CopyTo(Array, Int32) 从目标数组的指定索引处开始将整个 BitArray 复制到兼容的一维 Array。
Equals(Object) 确定指定对象是否等于当前对象。(继承自 Object)
Get(Int32) 获取 BitArray 中特定位置处的位的值。
Set(Int32, Boolean) 将 BitArray 中特定位置处的位设置为指定值。
SetAll(Boolean) 将 BitArray 中的所有位设置为指定值。
ToString() 返回表示当前对象的字符串。(继承自 Object)

4、哈希表(Hashtable)

哈希表是一个根据键的哈希码1进行组织的键/值对的集合。在哈希表中,可以使用键来访问对应的元素值。有时候正确的使用哈希表,可以显著的提高代码的性能,比方说需要在项目中实现高效的数据存储和查找的时候。

示例代码:

using System;
using System.Collections;

public class SamplesHashtable
{
    public static void Main()
    {
        // 创建一个新的哈希表对象 
        Hashtable openWith = new Hashtable();

        // 添加一些元素到哈希表中。没有重复的键,但是有些值是重复的。
        openWith.Add("txt", "notepad.exe");
        openWith.Add("bmp", "paint.exe");
        openWith.Add("dib", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");

        // 如果新键为,Add方法抛出异常
        // 已经在哈希表中。
        try
        {
            openWith.Add("txt", "winword.exe");
        }
        catch
        {
            Console.WriteLine("带有Key的元素 = \"txt\" .");
        }

        // Item属性是默认属性在访问元素时可以省略它的名称。  
        Console.WriteLine("关于键 = \"rtf\", 值 = {0}.", openWith["rtf"]);

        //可以使用默认的Item属性更改该值与键相关联。
        openWith["rtf"] = "winword.exe";
        Console.WriteLine("关于键 = \"rtf\", 值 = {0}.", openWith["rtf"]);

        //如果键不存在,设置默认的Item属性为该键添加新的键/值对。
        openWith["doc"] = "winword.exe";

        // ContainsKey可用于在插入键之前测试键。 
        if (!openWith.ContainsKey("ht"))
        {
            openWith.Add("ht", "hypertrm.exe");
            Console.WriteLine("键增加值 = \"ht\": {0}", openWith["ht"]);
        }

        // 当您使用foreach枚举哈希表元素时,元素将作为KeyValuePair对象检索。
        Console.WriteLine("=====");

        foreach (DictionaryEntry de in openWith)
        {
            Console.WriteLine("键 = {0}, 值 = {1}", de.Key, de.Value);
        }

        // 要单独获取值,使用values属性。
        ICollection valueColl = openWith.Values;

        // ValueCollection 的元素使用为哈希表值指定的类型进行强类型处理。
        Console.WriteLine("=====");
        foreach (string s in valueColl)
        {
            Console.WriteLine("值 = {0}", s);
        }

        // 要单独获取密钥,请使用keys属性。
        ICollection keyColl = openWith.Keys;

        // KeyCollection的元素是强类型的,与哈希表键指定的类型一致。
        Console.WriteLine("=====");
        foreach (string s in keyColl)
        {
            Console.WriteLine("键 = {0}", s);
        }

        // 使用Remove方法删除键/值对。
        Console.WriteLine("\n移除(\"doc\")");
        openWith.Remove("doc");

        if (!openWith.ContainsKey("doc"))
        {
            Console.WriteLine("键 \"doc\" 没有找到");
        }
    }
}

运行结果:
c# 集合类,C#/.NET系列文章,c#,开发语言,.net,微软,.netcore
在上例中,演示了哈希表的一些基本操作,其中包括但不限于添加元素、根据键添加设置元素值、遍历输出表中的键和值元素、删除指定键的元素以及判断表中是否包含某个元素等。

Hashtable 类一些常用的属性:

属性名 描述
Count 获取包含在 Hashtable 中的键/值对的数目。
IsFixedSize 获取一个值,该值指示 Hashtable 是否具有固定大小。
IsReadOnly 获取一个值,该值指示 Hashtable 是否为只读。
Item[Object] 获取或设置与指定的键关联的值。
Keys 获取包含 ICollection 中的键的 Hashtable。
Values 获取一个 ICollection,它包含 Hashtable 中的值。

Hashtable 类一些常用的方法:

方法名 描述
Add(Object, Object) 将带有指定键和值的元素添加到 Hashtable 中。
Clear() 从 Hashtable 中移除所有元素。
Clone() 创建 Hashtable 的浅表副本。
Contains(Object) 确定 Hashtable 是否包含特定键。
ContainsKey(Object) 确定 Hashtable 是否包含特定键。
ContainsValue(Object) 确定 Hashtable 是否包含特定值。
CopyTo(Array, Int32) 将 Hashtable 元素复制到一维 Array 实例中的指定索引位置。
Equals(Object) 确定指定对象是否等于当前对象。(继承自 Object)
GetType() 获取当前实例的 Type。(继承自 Object)
KeyEquals(Object, Object) 将特定 Object 与 Hashtable 中的特定键进行比较。
Remove(Object) 从 Hashtable 中移除带有指定键的元素。
ToString() 返回表示当前对象的字符串。(继承自 Object)

5、队列(Queue)

队列是一种特殊的线性表2,只在表头(也称为队头)进行删除操作,只在表尾(也称为队尾)进行插入操作。由于队列的修改是按先进先出的原则,所以队列又称为先进先出(First In First Out)表,简称FIFO表。在项目中实现异步任务和进程之间的通信是队列最常用的两个方面。可以概述为不需要马上获得结果,但又需要控制一定的并发量3的时候,就需要用到队列。

示例代码:

using System;
using System.Collections;
public class SamplesQueue
{
    public static void Main()
    {
        // 创建并初始化一个新的队列
        Queue myQ = new Queue();
        myQ.Enqueue("Hello");
        myQ.Enqueue("World");
        myQ.Enqueue("!");

        // 展示队列的属性和元素值
        Console.WriteLine("myQ");
        Console.WriteLine("元素个数:{0}", myQ.Count);
        Console.Write("元素值:");
        PrintValues(myQ);
    }

    public static void PrintValues(IEnumerable myCollection)
    {
        foreach (Object obj in myCollection)
            Console.Write("{0}", obj);
        Console.WriteLine();
    }
}

运行结果:
c# 集合类,C#/.NET系列文章,c#,开发语言,.net,微软,.netcore
在上例中演示了如何创建并初始化一个队列对象,可以使用 Enqueue 方法将元素添加到 Queue 队列,并使用循环输出队列中的元素。

Queue 类一些常用的属性:

属性名 描述
Count 获取 Queue 中包含的元素数。
SyncRoot 获取可用于同步对 Queue 的访问的对象。

Queue 类一些常用的方法:

方法名 描述
Clear() 从 Queue 中移除所有对象。
Clone() 创建 Queue 的浅表副本。
Contains(Object) 确定某元素是否在 Queue 中。
CopyTo(Array, Int32) 从指定数组索引开始将 Queue 元素复制到现有一维 Array 中。
Dequeue() 移除并返回位于 Queue 开始处的对象。
Enqueue(Object) 将对象添加到 Queue 的结尾处。
Equals(Object) 确定指定对象是否等于当前对象。(继承自 Object)
GetType() 获取当前实例的 Type。(继承自 Object)
Peek() 返回位于 Queue 开始处的对象但不将其移除。
ToArray() 将 Queue 元素复制到新数组。
ToString() 返回表示当前对象的字符串。(继承自 Object)

6、排序列表(SortedList)

排序列表是数组和哈希表的组合。其中包含一个可使用键或索引访问各项的列表。当使用索引访问各项时,排序列表是一个动态数组,当使用键访问各项,排序列表是一个哈希表。集合中的各项总是按键值排序。当集合中的元素个数非常大,且需要按照一定的规则进行排序时,就可以考虑使用排序列表。

示例代码:

using System;
using System.Collections;

public class SamplesSortedList
{
    public static void Main()
    {
        // 创建并初始化一个新的排序列表 
        SortedList mySL = new SortedList();
        mySL.Add("Third", "!");
        mySL.Add("Second", "World");
        mySL.Add("First", "Hello");

        // 显示排序列表的属性和元素值
        Console.WriteLine("mySL");
        Console.WriteLine("  元素个数:    {0}", mySL.Count);
        Console.WriteLine("  列表容量: {0}", mySL.Capacity);
        Console.WriteLine("  键和值:");
        PrintKeysAndValues(mySL);
    }

    public static void PrintKeysAndValues(SortedList myList)
    {
        Console.WriteLine("\t-键-\t-值-");
        for (int i = 0; i < myList.Count; i++)
        {
            Console.WriteLine("\t{0}:\t{1}", myList.GetKey(i), myList.GetByIndex(i));
        }
        Console.WriteLine();
    }
} 

运行结果:
c# 集合类,C#/.NET系列文章,c#,开发语言,.net,微软,.netcore

在上例中,我们既可以像哈希表一样使用 Add 方法往集合中添加元素,也可以像数组一样使用索引访问集合元素。

SortedList 类一些常用的属性:

属性名 描述
Capacity 获取或设置 SortedList 对象的容量。
Count 获取 SortedList 对象中包含的元素数。
IsFixedSize 获取一个值,该值指示 SortedList 对象是否具有固定大小。
IsReadOnly 获取一个值,该值指示 SortedList 对象是否为只读。
Item[Object] 获取或设置与 SortedList 对象中的特定键相关联的值。
Keys 获取 SortedList 对象中的键。
Values 获取 SortedList 对象中的值。

SortedList 类一些常用的方法:

方法名 描述
Add(Object, Object) 将带有指定键和值的元素添加到 SortedList 对象。
Clear() 从 SortedList 对象中移除所有元素。
Clone() 创建 SortedList 对象的浅表副本。
Contains(Object) 确定 SortedList 对象是否包含特定键。
ContainsKey(Object) 确定 SortedList 对象是否包含特定键。
ContainsValue(Object) 确定 SortedList 对象是否包含特定值。
CopyTo(Array, Int32) 从指定数组索引开始将 SortedList 元素复制到一维 Array 对象中。
Equals(Object) 确定指定对象是否等于当前对象。(继承自 Object)
GetByIndex(Int32) 获取 SortedList 对象的指定索引处的值。
GetKey(Int32) 获取 SortedList 对象的指定索引处的键。
GetKeyList() 获取 SortedList 对象中的键。
GetType() 获取当前实例的 Type。(继承自 Object)
GetValueList() 获取 SortedList 对象中的值。
IndexOfKey(Object) 返回 SortedList 对象中指定键的从零开始的索引。
IndexOfValue(Object) 返回指定的值在 SortedList 对象中第一个匹配项的从零开始的索引。
Remove(Object) 从 SortedList 对象中移除带有指定键的元素。
RemoveAt(Int32) 移除 SortedList 对象的指定索引处的元素。
SetByIndex(Int32, Object) 替换 SortedList 对象中指定索引处的值。
ToString() 返回表示当前对象的字符串。(继承自 Object)
TrimToSize() 将容量设置为 SortedList 对象中元素的实际数目。

7、堆栈(Stack)

堆栈是限定仅在表尾进行插入或删除操作的一种特殊的线性表。因此,对堆栈来说,表尾端有特殊含义,称为栈顶(top), 表头端成为栈底(bottom),堆栈的修改是按后进先出的原则进行的。 不含元素的空表成为空栈。当数据的处理顺序要与接收顺序相反时(LIFO),我们就可以用堆栈的结构。

示例代码:

using System;
using System.Collections;
public class SamplesStack
{

    public static void Main()
    {
        // 创建并初始化一个新的栈
        Stack myStack = new Stack();
        myStack.Push("Hello");
        myStack.Push("World");
        myStack.Push("!");

        // 显示栈的属性和元素值 
        Console.WriteLine("myStack");
        Console.WriteLine("\t元素个数:{0}", myStack.Count);
        Console.Write("\t元素值:");
        PrintValues(myStack);
    }

    public static void PrintValues(IEnumerable myCollection)
    {
        foreach (Object obj in myCollection)
            Console.Write("{0}", obj);
        Console.WriteLine();
    }
}

运行结果:
c# 集合类,C#/.NET系列文章,c#,开发语言,.net,微软,.netcore
在上例中可以发现最先进入到栈内的元素反而最晚出来,遵循着先进后出的原则。这刚好与队列先进先出的表现相反。

Stack 类一些常用的属性:

属性名 描述
Count 获取 Stack 中包含的元素数。
IsSynchronized 获取一个值,该值指示是否同步对 Stack 的访问(线程安全)。
SyncRoot 获取可用于同步对 Stack 的访问的对象。

Stack 类一些常用的方法:

方法名 描述
Clear() 从 Stack 中移除所有对象。
Clone() 创建 Stack 的浅表副本。
Contains(Object) 确定某元素是否在 Stack 中。
CopyTo(Array, Int32) 从指定的数组索引处开始,将 Stack 复制到现有的一维 Array 中。
Equals(Object) 确定指定对象是否等于当前对象。(继承自 Object)
GetType() 获取当前实例的 Type。(继承自 Object)
Peek() 返回位于 Stack 顶部的对象但不将其移除。
Pop() 删除并返回 Stack 顶部的对象。
Push(Object) 在 Stack 的顶部插入一个对象。
ToArray() 将 Stack 复制到新数组中。
ToString() 返回表示当前对象的字符串。(继承自 Object)

点击了解更多集合类的使用。


结语

🌅 以上就是 C# 集合类的介绍啦,希望对大家有所帮助。感谢大家的支持。


  1. 哈希码: 是一种并不完全唯一的算法,让同一个类的对象按照自己不同的特征尽量的有不同的哈希码,但并不表示不同的对象哈希码完全不同。也有相同的情况,看卡法这如何写哈希码的算法。 ↩︎

  2. 线性表: 表示 n 个具有相同特性的数据元素的有限序列。是最简单、最基本、也是最常用的一种数据结构。 ↩︎

  3. 并发量: 指的是系统同时处理的操作或请求数量。 ↩︎文章来源地址https://www.toymoban.com/news/detail-699437.html

到了这里,关于【C#进阶】C# 集合类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 每个.NET开发都应掌握的C#接口知识点

    作为.NET开发者,接口是C#必须掌握的知识点,接口是C#中实现多态和组件间互操作性的关键机制之一。 接口是一种抽象的类型,它定义了一组成员(方法、属性、事件等)的规范,但没有实现代码。类可以实现一个或多个接口,以表明它们提供了特定的功能。 以下是每个.N

    2024年02月13日
    浏览(47)
  • 【《C# 10 和 .NET 6入门与跨平台开发(第6版)》——一本循序渐进的C#指南】

    这个新版本对上一版做了全面修订,涵盖C# 10和.NET 6的所有新功能. 本书讨论面向对象编程、编写函数、测试函数、调试函数、实现接口以及继承类等主题;介绍.NET API,这些API可执行多种任务,如管理和查询数据,监视和改进性能,以及使用文件系统、异步流、序列化和加密

    2024年02月14日
    浏览(46)
  • 每个.NET开发都应掌握的C#异常处理知识点

    上篇文章讲述了C#集合知识点,本文将介绍C#异常处理知识点。异常处理是.NET开发中至关重要的一部分,它允许开发者在程序出现错误或不正常情况时采取适当的措施,从而提高应用程序的稳定性和可靠性。本文将介绍C#异常处理知识点,异常的基本概念略过,请查看官网。

    2024年02月08日
    浏览(56)
  • 每个.NET开发都应掌握的C#委托事件知识点

    上篇文章讲述了C#接口的知识点,本文将介绍C#委托事件知识点。C#作为.NET开发的核心语言之一,提供了丰富的特性来支持面向对象编程和事件驱动的模型。其中,委托和事件是C#中不可或缺的关键概念,每个.NET开发者都应该深入理解它们的作用和用法。委托和事件密不可分,

    2024年02月12日
    浏览(40)
  • 每个.NET开发都应掌握C#泛型的知识点

    C#泛型编程是.NET framework 2.0的新特征,它提高了代码安全性和代码重用的问题。由于泛型必须指定类型,正确的使用可以避免了装箱拆箱的问题;使用了泛型后,可以将算法或组件泛型化,基于类型参数支持任意数据类型,从而提高了代码的重用性。 C#泛型编程在C#是很重要的特

    2024年02月15日
    浏览(48)
  • 每个.NET开发都应掌握的C#多线程知识点

    上篇文章讲述了C#特性(Attribute)知识点,本文将介绍多线程的知识点。多线程编程是现代软件开发中的重要组成部分,它能够充分利用多核处理器,提高应用程序的性能和响应性。C#作为.NET开发的主要语言,提供了强大的多线程支持。本文将介绍C#多线程知识点,帮助.NET开

    2024年02月05日
    浏览(65)
  • 每个.NET开发都应掌握的C#特性(Attribute)知识点

    上篇文章讲述了C#反射知识点,本文将介绍C#特性(Attribute)的知识点。C#特性(Attribute)是一种强大的元数据机制,用于为代码元素(如类、方法、属性等)添加信息,以影响它们的行为或提供额外的信息。本文将介绍C#特性每个.NET开发都应熟悉的知识点,希望对大家开发有

    2024年02月08日
    浏览(43)
  • 【C#进阶】C# 集合类

    序号 系列文章 16 【C#进阶】C# 索引器 17 【C#进阶】C# 委托 18 【C#进阶】C# 事件 🌄 hello大家好啊,我是哈桑,本章为大家介绍 C# 中的集合类。 集合类 是专门用于数据存储和检索的类。在这些类中实现了对列表、队列、哈希表等数据结构的封装以及对操作数据的支持。当在项

    2024年02月09日
    浏览(28)
  • 【Unity 踩坑系列】配置VScode的C#环境自动下载 .NET Runtime Failed to download 问题解决后续!!!

    想必大家这几天肯定都被Vscode C#插件的自动下载.net runtime的问题所烦恼,之前我也出了一期文章是来解决这个问题的但是,只是解决了部分网友们的问题有部分网友还是会自动下载! 【Unity 踩坑系列】配置VScode环境Downloading the.NET Runtime Failed to download 之前没看过这篇解决方案

    2024年02月10日
    浏览(45)
  • 每个.NET开发都应掌握的C#处理文件系统I/O知识点

    上篇文章讲述了C#多线程知识点,本文将介绍C#处理文件的知识点。在.NET开发领域,文件系统I/O是一个至关重要的主题,尤其是在处理文件、目录和数据存储方面。C#作为.NET平台的主要编程语言,提供了丰富而强大的文件系统I/O功能,为开发人员提供了灵活的工具,使其能够

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包