06 2018 档案

摘要:Thread类相对于线程池中的线程,使用者有更多的控制权。该类允许创建前台线程,设置线程优先级等。Thread类的构造函数重载为接受ThreadStart和ParameterizedThreadStart类型的委托参数。 1、给线程传递数据 给线程传递数据的两种方式: 1.使用带Parameteri 阅读全文
posted @ 2018-06-30 22:02 一只独行的猿 阅读(435) 评论(0) 推荐(0) 编辑
摘要:线程的创建需要时间。如果存在多个任务需要完成,则可以事先创建许多线程,在应该完成任务时发出需求线程请求。线程数最好时动态的增加于减少。TheadPool类可以托管线程列表,这个类能动态增加于减少线程的线程数,直到最大线程数 可配置。在四核CPU中,默认为1023个工作线程和1000个I/O线程。也可 阅读全文
posted @ 2018-06-29 21:36 一只独行的猿 阅读(231) 评论(0) 推荐(0) 编辑
摘要:在泛型类中,由于不知道泛型参数T是什么类型,可能是引用类型,也可能是值类型,因此不能将null等赋予泛型类型。如何对泛型对象赋初值、如何保证泛型的正确性等,以使用泛型文档管理器为例: 文档管理器用于从队列中读写文档。首先创建一个泛型管理器AddDocument()方法添加一个文档到队列中,IsDoc 阅读全文
posted @ 2018-06-29 20:30 一只独行的猿 阅读(261) 评论(0) 推荐(0) 编辑
摘要:使用泛型可以定义接口,在接口中定义的方法可以带泛型参数。在链表的中,实现了IEnumerable<out T>接口,它定义了GetEnumerator()方法,返回IEnumerator<T>。.net中提供了许多泛型接口:IComparable<T>、ICollection<T>和Iextensi 阅读全文
posted @ 2018-06-28 21:19 一只独行的猿 阅读(1558) 评论(0) 推荐(2) 编辑
摘要:在处理数字有许多位时,可以使用C#中的BitArray类和BitVector32结构。BitArray类与BitVector32结构的区别是:BitArray类可以重新设置大小,对于事先不知道需要的位数,可以使用BitArray类,它可以包含很多位。BitVector32结构是基于栈的,相对于类比较 阅读全文
posted @ 2018-06-27 22:53 一只独行的猿 阅读(2437) 评论(0) 推荐(0) 编辑
摘要:事件基于委托,为委托提供了一种发布/订阅机制。如Windows应用程序中,Button类提供的Click事件就是委托。 1、普通事件(强事件) 在编写事件的过程中,需要构造一个事件参数类,用以存放事件的数据。其次,需要一个事件发布者和侦听者。当事件发布者发布事件时,侦听者将接受到消息。事件参数类继承 阅读全文
posted @ 2018-06-27 18:51 一只独行的猿 阅读(995) 评论(0) 推荐(0) 编辑
摘要:1、基础 有对象的地方,一般都会存在比较。在此根据一个Salary列表实现对象比较的例子。Salary类需要实现接口IComparable。 实现接口IComparable后,可以根据BaseSalary对Salary集合对象排序。在Main函数中代码如下: 但是,此处实现相当于比较局限,局限与只能 阅读全文
posted @ 2018-06-27 18:51 一只独行的猿 阅读(254) 评论(0) 推荐(0) 编辑
摘要:委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。委托类型有:delegate、Action、Func、Predicate。事件是一种特殊的委托。 1、委托的声明 1.1、Delegate 是常用到的一种声明。 至少0个参数,至多32个参数,可以无返回值,也可以指定返回 阅读全文
posted @ 2018-06-26 21:13 一只独行的猿 阅读(194) 评论(0) 推荐(0) 编辑
摘要:自定义特性允许把自定义元数据与程序元素关联起来。在.NET Framework框架中,微软定义了许多特性提供给开发人员使用,如StructLayout特性中的信息在内存中布置结构。这些已有的特性得到了C#编译器的支持,编译器可以以特殊的方式定制编译过程。但是,在某些特定场合需要开发人员定义自己的特性 阅读全文
posted @ 2018-06-24 16:51 一只独行的猿 阅读(307) 评论(0) 推荐(0) 编辑
摘要:反射描述了在运行过程中检查和处理程序元素的功能。反射可以完成以下任务: 枚举类型的成员; 实例化新对象; 执行对象的成员; 查找类型的信息; 查询程序集的信息; 检查应用于某种类型的自定义特性; 创建和编译新程序集。 1、Type类 Type类是一个抽象的基类。只要实例化一个Type对象,实际上就是 阅读全文
posted @ 2018-06-24 15:23 一只独行的猿 阅读(3549) 评论(0) 推荐(0) 编辑
摘要:所谓成员,是指类型的字段和方法。在成员设计时,掌握一定原则可以避免设计上的陷阱。 1、不要为抽象类提供公开的构造方法 抽象类可以有构造方法,但是抽象类不能实例化。如果编程人员没有制定构造方法,编译器会自动生成一个默认的protected构造方法。下面是一个标准的简单抽象类: 抽象类的构造方法不应该是 阅读全文
posted @ 2018-06-14 15:12 一只独行的猿 阅读(219) 评论(0) 推荐(0) 编辑
摘要:在前面讲到了《基于任务的异步编程模式(TAP)》,但是如果调用异步方法,没有等待,那么调用异步方法的线程中使用传统的try/catch块是不能捕获到异步方法中的异常。因为在异步方法执行出现异常之前,已经执行完毕。 1、没有等待的调用异步方法 ThrowAfter方法是在一定延迟后抛出一个异常: Do 阅读全文
posted @ 2018-06-06 22:53 一只独行的猿 阅读(505) 评论(0) 推荐(0) 编辑
摘要:异步编程是C#5.0的一个重要改进,提供两个关键字:async和await。使用异步编程,方法的调用是在后台运行(通常在线程或任务的帮助下),但不会阻塞调用线程。异步模式分为3种:异步模式、基于事件的异步模式和基于任务的异步模式(TAP)。TAP是利用关键字async和await实现的,本文将讲解T 阅读全文
posted @ 2018-06-06 22:05 一只独行的猿 阅读(1141) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示