C#集合命名空间、接口及类型

一、C#集合的命名空间
1.System.Collections                            //非泛型集合
2.System.Collections.Generic               //泛型集合
3.System.Collections.Specialized         //特定集合
4.System.Collections.Concurrent         //支持并发的线程安全集合
5.System.Collections.ObjectModel      //可观察的集合,该命名空间下的ObservableCollection集合类专用于WPF,
                                                                其特性是集合属性发生变化时可将变更通知到UI以便及时刷新UI.
 
二、常见集合接口表
C#常见集合接口
 
接口
 
用途
非泛型接口
IEnumerator
  
IEnumerable
  
ICollection
  
IDictionary
  
IList
  
泛型接口
IEqualityComparer<T>
 
相等性比较
IComparer<T>
 
排序
IEnumerator<T>
 
枚举器接口,用于遍历集合元素(实现该接口将能够享受foreach语法糖)。
IColletion<T>
 提供获取集合基本属性和操作的方法,包括
元素个数、
清空集合、
添加元素、
删除元素、
元素包含检验、
集合范围复制
IList<T>
 获取或移除指定位置元素(索引访问方式)、
在指定位置插入元素
计算指定元素位置
 
IDictionary<TKey,TValue>
 
访问键和值的接口
ISet
 
集合的布尔操作接口,包括集合的并、交、差、(真)子集和(真)超集检验等
IProducerConsumerCollection<T>
 
支持线程安全的接口(.NET 4增加
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
三、常见集合表
C#常见集合表(注意:n/a为not applicatable,表示该操作不能应用于该类型集合)
分类
集合名称
元素访问方式
增加
插入
删除
排序
检索
特点
非关联性集合
List<T>
(列表)
Index
如果集合必须重置大小,就是O(1)或O(n)
O(n)
O(n)
O(n,logn),最坏情况是O(n^2)
 ①当重置集合大小时将会增加时间复杂度
②功能齐全方便,适用于小型集合
LinkedList<T>
(双向链表)
只能选择从头或尾部按照前后关系遍历访问
O(1)
O(1)
O(1)
n/a
n/a
①访问效率低下,必须从头尾遍历
②元素的添加和删除非常高效
Queue<T>
(队列)
只能获取底部元素
如果集合必须重置大小,就是O(1)或O(n)
 
n/a
O(1)
n/a
n/a
FIFO
Stack<T>
(栈)
只能获取顶部元素
n/a
O(1)
n/a
n/a
FILO
HashSet
只能通过IEnumerator遍历访问
O(1)或O(n)
O(1)
n/a
n/a
①均实现ISet接口,ISet接口表示集,所谓集为不含重复元素的集合,因此可保证元素的唯一性
支持集合运算(并、交、差、(真)子集、(真)超集关系运算)
 
SortedSet
O(1)或O(n)
O(1)
n/a
n/a
关联性集合
Dictionaty<TKey,TValue>
Key
O(1)或O(n)
n/a
O(1)
n/a
n/a
排序、检索性能取决于TKey实现的GetHashCode方法
SortedDictionary<TKey,TValue>
Key
O(logN)
n/a
O(logN)
n/a
n/a
 
SortedList<TKey,TValue>
Key
无序数据为O(n);
如果必须重置大小就是O(n);
到列表尾部就是O(logN)
n/a
O(n)
n/a
n/a
 
Lookup<TKey,TValue>
Key
     一键多值
②无构造函数,仅能通过静态扩展方法ToLookup创建
位数组
BitArray
Index
     
可基于int数组A创建位数组B,A中的每一个数字将转换为32位二进制形式,并将每一bit位值转换为true/false,最终B中的值只有true/false两种取值
BitVector32
      ①最多32位的位数组
②值类型,性能比BitArray高
并发集合
ConcurrentQueue
       
ConcurrentStack
       
ConcurrentBag
       
ConcurrentDictionnary
       
BlockingCollection
       

转载于:https://www.cnblogs.com/qjym/p/6939952.html

C#基础知识点个人整理【菜鸟教程】 原网页 复习方法:当解释定义题做一遍就行了(先在word里敲上概念,然后解释概念) 成员变量 变量是类的属性或数据成员,用于存储数据 成员函数 函数是一系列执行指定任务的语句。类的成员函数是在类内声明的。 实例化 标识符 标识符是用来识别类、变量、函数或任何其它用户定义的项目。 标识符必须以字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _ )、@。 标识符中的第一个字符不能是数字。 标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( 阅读详情

相关推荐

深入理解C#中的集合泛型集合

本文还有配套的精品资源,点击获取 简介:在C#编程中,集合泛型集合是核心概念,关系到数据的存储和操作。集合如 ArrayList 和 HashTable 提供了灵活的数据管理,但存在类型安全问题。泛型集合如 List<T> 和 Dictionary<TKey, TValue> 则通过预定义类型...

weixin_42263617的博客 937

C# List<T>用法

原文链接:https://www.cnblogs.com/mycolour/archive/2011/06/24/2088977.htmlC# List&lt;T&gt;用法所属命名空间:System.Collections.Generic     public class List&lt;T&gt; : IList&lt;T&gt;, ICollection&lt;T&gt;, IEnumera...

T_yang_T的博客 646

第四节、C# 上位机面向对象编程详解(工控硬件继承实战版)

继承核心价值:在 C# 上位机工控开发中,继承的核心是通用逻辑复用接口统一,将所有硬件的通用属性 / 方法封装到抽象基类,子类只需实现独有逻辑,大幅减少冗余代码。基类设计要点:优先使用抽象基类,合理分配访问修饰符(privateprotectedpublic),定义通用事件虚方法,提供资源释放机制,兼顾复用性扩展性。子类设计要点:通过: base()调用基类构造函数,强制实现抽象方法(保证接口统一),选择性重写虚方法(实现独有逻辑),复用基类的protected成员。多设备管理。

kylezhao2019的博客 753

c#类的命名空间(2021-3-6)

1.命名空间 类属于命名空间namespace,可以解决类的重名问题。 例如使用List类定义对象时(List list = new List();)需引入命名空间(using System.Collections.Generic) PS:在VS中如果当前项目中没有其所属的命名空间且不知道类所属的命名空间,可以将光标放在这个类上,点击显示的小图案或alt+shift+F10,即可导入命名空间。 2.在一个项目中引用另一个项目的类 右键点击项目的引用菜单->添加引用 默认会显示一些项目: 勾选需要的

qq_51476492的博客 1621

C# 基础精讲】List 集合的使用

List<T>是C#编程中非常常用的泛型集合类,用于存储一组相同类型的元素。本文介绍了List<T>的创建、添加、删除、查找和遍历等基本操作,以及常用的List<T>方法。同时,我们比较了List<T>数组的优缺点和适用场景,希望可以帮助您在实际开发中做出合理的选择。List<T>提供了更多灵活性和便利性,尤其在处理不确定数据量的情况下更为常用。祝您在C#编程中灵活使用List<T>,编写出高效、可维护的代码!

繁依Fanyi的博客 1万+

C#中协变和逆变的基本概念、List和List.Select方法的命名空间

C# 中,协变和逆变能够实现数组类型、委托类型和泛型类型参数的隐式引用转换。 协变保留分配兼容性,逆变则之相反。 msdn 解释如下: “协变”是指能够使用原始指定的派生类型相比,派生程度更大的类型。 “逆变”则是指能够使用派生程度更小的类型。 “协变”->”和谐的变”->”很自然的变化”->string->object :协变。 “逆变”->”逆常的变”->”不正常的变化”->object->string 逆变。 using System;

bcbobo21cn的专栏 1410

C# 集合(Collection)

本文介绍了C#中常用的集合类型及其特性。集合数组的主要区别在于集合支持动态管理数据,包括动态扩容和灵活增删元素。主要集合类型包括:ArrayList(动态数组)、List<T>(泛型列表)、Dictionary<TKey,TValue>(键值对)、Hashtable(哈希表)、SortedList(排序列表)、Stack(栈)和Queue(队列)。每种集合类型类型限制、长度特性、内存布局和性能方面各有特点。文章还提供了集合的使用示例和常见操作,如求平均值、生成随机数、分离奇偶数等

weixin_66547608的博客 1632

C#Java 的区别

相同点: 都是面向对象编程的语言,都能够实现面向对象的(封装,继承,多态)思想 不同点: 1.c#中的命名空间是namespace类似于Java中的package(包),在Java中导入包用import而c#中用using。 2.c#和Java都是从main函数入口的,但是c#中的main函数的首字母必须大写 3.数据类型:Java跟c#基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写,还有布尔型,Java中是boolean,c#中是bool。 4.变量的命名:Jav

bsegebr的博客 7734

C#命名空间)using System

using System System命名空间包含基本类和基类,这些类定义常用的值和引用类型、事件和事件处理程序、接口、属性和异常处理。其他类提供的服务支持数据类型转换、方法参数操作、数学运算、远程和本地程序调用、应用程序环境管理和对托管非托管的引用程序的监管。 using System.IO System.IO命名空间包含允许读写文件和数据流的类型以及提供基本文件和目录支持类型。 处理文件的操作(比如:Directory类,DirectoryInfo类,File类,FileInfo类,Stream类,

ZJ_____W的博客 3322

集合

集合接口 BCL中的集合类型分为非泛型和泛型 非泛型集合的类和接口位于System.Collections命名空间 泛型集合的类和接口位于System.Collections.Generic命名空间 基本上每个非泛型集合接口都有一个泛型版本,但并非每个泛型集合接口都有对应的非泛型本,这个例外就是ISet<T>泛型集合接口,没有对应的非泛型版本。 以下有一篇讲得非常好的文章...

weixin_30273175的博客 58

从语法角度简单了解JavaC#的区别

Java和C#都是面向对象编程的语言。Java是Sun公司于1995年发布的开源项目,具有简单性、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性;C#是微软公司于2000年发布的编程语言,语言深受Java、C和C++的影响;(Golang语言是Google于2007-2008年创始研发,开发阵营空前强大,适宜组件式工程化编程);(Rust语言开创于2009年,致力于解决高并发和高安全性系统问题,具有内存安全、内存管理、所有权、类型和多态等多个特性) Java和C#语法

Bug君的博客 1532

C#常用类库

Array类 用括号声明数组是C#中使用Array类的记号。在后台使用C#语法,会创建一个派生于抽象基类Array的新类。这样,就可以使用Array类为每个C#数组定义的方法和属性了。 Array类实现了IEumerable、ICollection和IList接口,以访问和枚举数组中的元素。由于用定制数组创建的类派生于Array抽象类,所以能使用通过数组变量执行的接口中的方法和属...

weixin_30553837的博客 1398

C#总结

第1章 理解.NET FrameworkC# 1..NET框架1)2001年发布的.NET Framework经历5个版本:1.0,1.1,2.0,3.0,3.5 功能强大,主要体现在: 支持多种语言程序 具有强大的内库,提高开发效率 完善的数据安全管理 可开发多种类型的程序2).NET Framework由框架类库(FCL)和公共语言运行时(CLR)这两个主要的组件组成 CLR...

weixin_34240657的博客 78

C#和java区别

相同点: 都是面向对象编程的语言,都能够实现面向对象的(封装,继承,多态)思想 不同点: c#中的命名空间是namespace类似于Java中的package(包),在Java中导入包用import而c#中用using。 c#和Java都是从main函数入口的,但是c#中的main函数的首字母必须大写 数据类型:Java跟c#基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写,还有布尔型,Java中是boolean,c#中是bool。 变量的命

Abrahaml的博客 3104

C标准库详解:从csharpstandard项目看ECMA规范中的类库定义

C#标准库是ECMA C#规范的核心组成部分,它定义了C#语言必须支持的基础类型和成员。通过深入分析csharpstandard项目中的标准文档,我们可以清晰了解C#类库的规范定义和设计理念。本文将带你探索ECMA规范中类库的核心结构、关键类型和使用要点,帮助开发者更好地理解和应用C#标准库。 ## C#标准库的基础架构规范 C#标准库作为ECMA规范的一部分,定义了语言实现必须提供的最小类

gitblog_00283的博客 487

.netjava对比分析_对比分析C#Java的区别

相同点:都是面向对象编程的语言,都能够实现面向对象的(封装,继承,多态)思想不同点:1.c#中的命名空间是namespace类似于Java中的package(包),在Java中导入包用import而c#中用using。2.c#和Java都是从main函数入口的,但是c#中的main函数的首字母必须大写3.数据类型:Java跟c#基本都差不多,但是Java的String类型的首字母必须大写,而c#中...

weixin_30942339的博客 779

C#常用集合的使用

大多数集合都在System.Collections,System.Collections.Generic两个命名空间。其中System.Collections.Generic专门用于泛型集合。 针对特定类型集合类型位于System.Collections.Specialized;命名空间; 线程安全的集合类位于System.Collections.Concurrent;命名空间。 下面是集

ceclar123的专栏 5万+
上一篇: 主要正则表达式元字符列表(待完善)
下一篇: 注册表
diece9659
博客等级 码龄10年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值