C#基础提升系列——C#集合】的更多相关文章

C#集合 有两种主要的集合类型:泛型集合和非泛型集合. 泛型集合被添加在 .NET Framework 2.0 中,并提供编译时类型安全的集合. 因此,泛型集合通常能提供更好的性能. 构造泛型集合时,它们接受类型形参:并在向该集合添加项或从该集合删除项时无需在Object类型间来回转换. 集合接口和类型 System.Array :用于数组,提供创建,操作,搜索和排序数组的方法,是所有数组的基类. System.Collections :是ArrayList.Queue.Hashtable等基类…
简单的介绍一下集合,通俗来讲就是用来保管多个数据的方案.比如说我们是一个公司的仓库管理,公司有一堆货物需要管理,有同类的,有不同类的,总而言之就是很多.很乱.我们对照集合的概念对仓库进行管理的话,那么 数组就是将一堆货整整齐齐的码在仓库的某个地方,普通列表也是如此:Set就是在仓库里有这么一个货架,每种货品只能放一个,一旦某种货品超过一个了货架就塌了:Dictionary字典呢,在一个货架上随机摆放,然后再找一个本子把每个货品存放的位置记录下来. 1. 主要集合 C#/.NET Framewor…
C# 委托 委托是类型安全的类,它定义了返回类型和参数的类型,委托类可以包含一个或多个方法的引用.可以使用lambda表达式实现参数是委托类型的方法. 委托 当需要把一个方法作为参数传递给另一个方法时,就需要使用委托.委托是一种特殊类型的对象,其特殊之处在于,我们以前定义的所有对象都包含数据,而委托包含的只是一个或多个方法的地址. 声明委托类型 声明委托类型就是告诉编译器,这种类型的委托表示的是哪种类型的方法.语法如下: delegate void delegateTypeName[<T>](…
前言 本节主要是来了解学习集合,以方便在程序编写时,什么地方该选用什么集合,让程序更健壮的运行起来.在学习了解集合之前,首先需要了解一些数据结构方面的知识.下面我们就先简单的来看一下数据结构. 数据结构 数据结构就是相互之间存在一种或多种特定关系的数据元素的集合. 程序界有一点很经典的话,程序设计=数据结构+算法.用源代码来体现,数据结构,就是编程. 集合分类 在上图中可以看到,集合总体上分为线性集合和非线性集合.线性集合按照存储方式又分为直接存储和顺序存储. 直接存储,是指该类型的集合数据元素…
C#任务和并行编程 我们在处理有些需要等待的操作时,例如,文件读取.数据库或网络访问等,这些都需要一定的时间,我们可以使用多线程,不需要让用户一直等待这些任务的完成,就可以同时执行其他的一些操作.即使是处理密集型的任务,线程也能起到帮助作用, 一个进程的多个线程可以同时运行在不同的CPU上,或多核CPU的不同内核上. 在.NET 4.0之后,提供了线程的一个抽象机制:任务.任务允许建立任务之间的关系(例如,一个任务完成之后可以继续下一个任务),也可以建立一个层级结构,其中包含多个任务. 可以是使…
C#异步编程 关于异步的概述,这里引用MSDN的一段文字: 异步编程是一项关键技术,使得能够简单处理多个核心上的阻塞 I/O 和并发操作. 如果需要 I/O 绑定(例如从网络请求数据或访问数据库),则需要利用异步编程. 还可以使用 CPU 绑定代码(例如执行成本高昂的计算),对编写异步代码而言,这是一个不错的方案. 异步代码具有以下特点: 等待 I/O 请求返回的同时,可通过生成处理更多请求的线程,处理更多的服务器请求. 等待 I/O 请求的同时生成 UI 交互线程,并通过将长时间运行的工作转换…
C#文件和流 本文主要是对C#中的流进行详细讲解,关于C#中的文件操作,考虑到后期.net core跨平台,相关操作可能会发生很大变化,所以此处不对文件系统(包括目录.文件)过多的讲解,只会描述出在.net framework下常用的类,具体用法请参见官方API文档. 管理文件系统 在Windows上,用于浏览文件系统和执行操作的相关类有: FileSystemInfo:这是表示任何文件系统对象的基类. FileInfo和File:这些类表示文件系统上的文件. DirectoryInfo和Dir…
C# LINQ LINQ(Language Integrated Query,语言集成查询).在C# 语言中集成了查询语法,可以用相同的语法访问不同的数据源. 命名空间System.Linq下的类Enumerate中定义了许多LINQ扩展方法,用于可以在实现了IEnumerable<T>接口的任意集合上使用LINQ查询. 扩展方法 C#扩展方法在静态类中声明,定义为一个静态方法,其中第一个参数定义了它扩展的类型,扩展方法必须对第一个参数使用this关键字. public static clas…
C# 泛型(Generics) 泛型概述 泛型是C#编程语言的一部分,它与程序集中的IL(Intermediate Language,中间语言)代码紧密的集成.通过泛型,我们不必给不同的类型编写功能相同的许多方法和类,而是可以创建独立于被包含类型的一个类或方法. 例如,通过使用泛型类型参数 T,可以编写其他客户端代码能够使用的单个类,而不会产生运行时转换或装箱操作的成本或风险.使用泛型类型可以最大限度地重用代码.保护类型安全性以及提高性能. 泛型性能 泛型的一个主要优点是性能.值类型存储在栈上,…
C#任务同步 如果需要共享数据,就必须使用同步技术,确保一次只有一个线程访问和改变共享状态.如果不注意同步,就会出现争用条件和死锁. 不同步导致的线程问题 如果两个或多个线程访问相同的对象,并且对共享状态的访问没有同步,就会出现争用条件.为了解决这类问题,可以使用lock语句,对共享对象进行锁定,除了进行锁定之外,还可以将共享对象设置为线程安全的对象. 注意:只有引用类型才能使用lock进行锁定. 锁定并不是越多越好,过多的锁定会造成死锁,在死锁中,至少有两个线程被挂起,并等待对象解除锁定.由于…