C#列表List、HashSet和只读集合介绍

下面是关于C#列表List、HashSet和只读集合的详细介绍:

C#列表List

List 是 .NET 中一个通用的动态数组容器,它能存储任何类型的数据 (T 类型)。它是许多数据存储的良好选择,因为它支持快速的索引查找,提供了几个有用的方法,如 Add()、Remove() 和 Sort()。List 自动处理数组大小,所以是一个不错的集合。

声明和初始化

// 声明一个 List<int> 类型的 List
List<int> list = new List<int>();

// 初始化 List 并添加数据
List<int> list = new List<int> {1, 2, 3};

基本操作

添加和删除元素

list.Add(4); // 添加元素到末尾
list.Insert(0, 5); // 在指定的索引处插入元素

list.Remove(3); // 删除指定元素
list.RemoveAt(0); // 删除指定索引处的元素
list.Clear(); // 清空 List 中所有元素

遍历

foreach(int i in list) {
    Console.WriteLine(i);
}

排序

list.Sort();
list.Reverse(); // 反转 List 中所有元素

检索元素

int index = list.IndexOf(2); // 返回指定元素第一次出现的索引值
bool exists = list.Contains(3); // 判断 List 中是否存在指定元素

HashSet

在 C# 中,HashSet 是一个高效的存储唯一元素的数据结构,使用 HashSet 可以快速地添加、删除元素,并在 O(1) 时间内检查元素是否存在。HashSet 的一个使用场景是去除一个集合中的重复元素。

声明和初始化

// 声明一个 HashSet<int> 类型的 hashSet
HashSet<int> hashSet = new HashSet<int>();

// 初始化 HashSet 并添加数据
HashSet<int> hashSet = new HashSet<int> {1, 2, 3};

基本操作

添加和删除元素

hashSet.Add(4); // 添加元素

hashSet.Remove(3); // 删除指定元素
hashSet.Clear(); // 清空 HashSet 中所有元素

检索元素

bool exists = hashSet.Contains(3); // 判断 HashSet 中是否存在指定元素

只读集合

只读集合是指一种集合,不能修改其的数据。修改集合的唯一方式是重新创建一个新集合。它提供了一个隐藏元素的,只允许读取元素的集合视图。

只读集合类型

只读集合有三种类型:ReadOnlyCollection、ReadOnlyDictionary 和 ReadOnlySet

ReadOnlyCollection

ReadOnlyCollection 类型是 IList 的包装器类型。它提供了一个由 IList 实现的只读集合视图。它支持许多基本操作,例如对集合进行索引,查找元素等操作,但是不允许修改元素。

ReadOnlyDictionary

ReadOnlyDictionary 类型是 IDictionary 的包装器类型。它提供了一个由 IDictionary 实现的只读集合视图。它支持许多基本操作,例如对集合进行索引,查找元素等操作,但是不允许修改元素。

ReadOnlySet

ReadOnlySet 类型是 ISet 的包装器类型。它提供了一个由 ISet 实现的只读集合视图。它支持许多基本操作,例如检查元素是否在集合中,但是不允许修改元素。

声明和初始化

// 声明一个只读列表
List<int> list = new List<int> {1, 2, 3};
ReadOnlyCollection<int> readOnlyList = new ReadOnlyCollection<int>(list);

// 声明一个只读集合
HashSet<int> hashSet = new HashSet<int> {1, 2, 3};
ReadOnlySet<int> readOnlySet = new ReadOnlySet<int>(hashSet);

// 声明一个只读字典
Dictionary<int,string> dictionary = new Dictionary<int,string>();
dictionary.Add(1, "One");
dictionary.Add(2, "Two");
ReadOnlyDictionary<int,string> readOnlyDictionary = new ReadOnlyDictionary<int,string>(dictionary);

以上是关于C#列表List、HashSet和只读集合的详细介绍,希望对你有帮助。

下面是两个使用示例:

示例1:使用List保存学生成绩并进行排序

class Student {
    public string Name { get; set; }
    public int Score { get; set; }
}

List<Student> students = new List<Student>{
    new Student { Name = "Tom", Score = 80 },
    new Student { Name = "Jerry", Score = 90 },
    new Student { Name = "Lily", Score = 70 }
};

students.Sort(delegate(Student s1, Student s2) { return s1.Score.CompareTo(s2.Score); });

foreach(Student s in students) {
    Console.WriteLine("{0}: {1}", s.Name, s.Score);
}

示例2:使用HashSet去除数组中的重复元素

int[] arr = { 1, 2, 2, 3, 3, 4, 5, 5 };
HashSet<int> hashSet = new HashSet<int>(arr);
foreach(int i in hashSet) {
    Console.Write("{0} ", i);
}

输出结果是:1 2 3 4 5。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#列表List、HashSet和只读集合介绍 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#实现将PPT转换成HTML的方法

    下面是详细讲解“C#实现将PPT转换成HTML的方法”的完整攻略。 1. 环境准备 要完成将PPT转换成HTML的任务,需要用到以下工具和环境: Office Interop Assemblies 用于在C#中访问Office文档的API。 Visual Studio 用于编写和运行C#代码。 PowerPoint 用于打开和处理PPT文件。 在安装好Off…

    C# 2023年6月1日
    00
  • 为HttpClient开启HTTP/2

    .Net Core在调用其他服务时,调用通常使用HttpClient,而HttpClient默认使用HTTP/1.1 。     配置 HttpClient 以使用 HTTP/2 h2 连接 自 .NET Core 3.0 发布以来, .NET 开发人员可以使用 HttpClient 启用 HTTP/2 。   设置 HTTP/2 的方法 DefaultRe…

    C# 2023年4月28日
    00
  • C#使用日志组件log4net

    让我来为您详细讲解“C#使用日志组件log4net”的完整攻略。 1. 什么是log4net log4net是一个日志记录组件,它为应用程序提供了提供基于框架级的日志记录功能。它允许开发人员在应用程序中记录消息、异常、错误和其它事件,而无需了解记录这些事件的底层细节。log4net支持多种日志记录输出目标,包括文件、数据库、远程服务器等。 2. 安装log4…

    C# 2023年5月15日
    00
  • javascript模拟实现C# String.format函数功能代码

    要在JavaScript中模拟实现C#的String.format函数,可以使用正则表达式和字符串替换的方法。以下是实现步骤: 创建一个名为format的函数,该函数接受两个参数:一个格式字符串和一个包含要替换的值的对象。 function format(str, obj) { // 实现代码 } 使用正则表达式匹配格式字符串中的占位符,并将其替换为相应的值…

    C# 2023年5月15日
    00
  • 详解asp.net core 依赖注入

    详解ASP.NET Core 依赖注入 ASP.NET Core 依赖注入是一种设计模式,它允许我们将对象的创建和管理从应用程序代码中分离出来。这种分离使得应用程序更加灵活、可测试和可维护。本攻略将详细介绍ASP.NET Core 依赖注入的概念、用法和示例。 什么是依赖注入? 依赖注入是一种设计模式,它允许我们将对象的创建和管理从应用程序代码中分离出来。在…

    C# 2023年5月16日
    00
  • ASP.NET Core项目结构教程(4)

    ASP.NET Core项目结构教程(4) 在ASP.NET Core应用程序中,项目结构是非常重要的。本攻略将介绍ASP.NET Core应用程序的项目结构,并提供两个示例说明。 1. 项目结构 ASP.NET Core应用程序的项目结构如下: MyApplication/ ├── Controllers/ │ ├── HomeController.cs …

    C# 2023年5月16日
    00
  • C#泛型类创建与使用的方法

    下面是关于”C#泛型类创建与使用的方法”的详细讲解。 什么是C#泛型类? 泛型类是一种将类型参数作为其一个或多个参数的类,可以将类型参数声明为在类、方法和接口代码中使用的占位符类型。使用泛型类可以为类型参数提供编译时类型安全的类和方法。 C#泛型类的创建 可以使用关键字class和类型参数列表创建一个泛型类,其中类型参数列表由尖括号(<>)中的一…

    C# 2023年6月1日
    00
  • Entity Framework映射TPH、TPT、TPC与继承类

    Entity Framework是一种ORM(Object Relational Mapping)框架,通过实体映射来将数据库中的表映射到代码中的类。当数据库中的表存在继承关系时,Entity Framework提供了三种继承映射策略:TPH、TPT、TPC。 TPH TPH(Table Per Hierarchy)策略将整个继承关系映射到同一张表中,该表有…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部