随笔分类 - C#
C#知识难点和疑点 积累
摘要:Thread类相对于线程池中的线程,使用者有更多的控制权。该类允许创建前台线程,设置线程优先级等。Thread类的构造函数重载为接受ThreadStart和ParameterizedThreadStart类型的委托参数。 1、给线程传递数据 给线程传递数据的两种方式: 1.使用带Parameteri
阅读全文
摘要:线程的创建需要时间。如果存在多个任务需要完成,则可以事先创建许多线程,在应该完成任务时发出需求线程请求。线程数最好时动态的增加于减少。TheadPool类可以托管线程列表,这个类能动态增加于减少线程的线程数,直到最大线程数 可配置。在四核CPU中,默认为1023个工作线程和1000个I/O线程。也可
阅读全文
摘要:在泛型类中,由于不知道泛型参数T是什么类型,可能是引用类型,也可能是值类型,因此不能将null等赋予泛型类型。如何对泛型对象赋初值、如何保证泛型的正确性等,以使用泛型文档管理器为例: 文档管理器用于从队列中读写文档。首先创建一个泛型管理器AddDocument()方法添加一个文档到队列中,IsDoc
阅读全文
摘要:使用泛型可以定义接口,在接口中定义的方法可以带泛型参数。在链表的中,实现了IEnumerable<out T>接口,它定义了GetEnumerator()方法,返回IEnumerator<T>。.net中提供了许多泛型接口:IComparable<T>、ICollection<T>和Iextensi
阅读全文
摘要:在处理数字有许多位时,可以使用C#中的BitArray类和BitVector32结构。BitArray类与BitVector32结构的区别是:BitArray类可以重新设置大小,对于事先不知道需要的位数,可以使用BitArray类,它可以包含很多位。BitVector32结构是基于栈的,相对于类比较
阅读全文
摘要:事件基于委托,为委托提供了一种发布/订阅机制。如Windows应用程序中,Button类提供的Click事件就是委托。 1、普通事件(强事件) 在编写事件的过程中,需要构造一个事件参数类,用以存放事件的数据。其次,需要一个事件发布者和侦听者。当事件发布者发布事件时,侦听者将接受到消息。事件参数类继承
阅读全文
摘要:委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。委托类型有:delegate、Action、Func、Predicate。事件是一种特殊的委托。 1、委托的声明 1.1、Delegate 是常用到的一种声明。 至少0个参数,至多32个参数,可以无返回值,也可以指定返回
阅读全文
摘要:自定义特性允许把自定义元数据与程序元素关联起来。在.NET Framework框架中,微软定义了许多特性提供给开发人员使用,如StructLayout特性中的信息在内存中布置结构。这些已有的特性得到了C#编译器的支持,编译器可以以特殊的方式定制编译过程。但是,在某些特定场合需要开发人员定义自己的特性
阅读全文
摘要:反射描述了在运行过程中检查和处理程序元素的功能。反射可以完成以下任务: 枚举类型的成员; 实例化新对象; 执行对象的成员; 查找类型的信息; 查询程序集的信息; 检查应用于某种类型的自定义特性; 创建和编译新程序集。 1、Type类 Type类是一个抽象的基类。只要实例化一个Type对象,实际上就是
阅读全文
摘要:在前面讲到了《基于任务的异步编程模式(TAP)》,但是如果调用异步方法,没有等待,那么调用异步方法的线程中使用传统的try/catch块是不能捕获到异步方法中的异常。因为在异步方法执行出现异常之前,已经执行完毕。 1、没有等待的调用异步方法 ThrowAfter方法是在一定延迟后抛出一个异常: Do
阅读全文
摘要:异步编程是C#5.0的一个重要改进,提供两个关键字:async和await。使用异步编程,方法的调用是在后台运行(通常在线程或任务的帮助下),但不会阻塞调用线程。异步模式分为3种:异步模式、基于事件的异步模式和基于任务的异步模式(TAP)。TAP是利用关键字async和await实现的,本文将讲解T
阅读全文
摘要:克隆方法是原型设计模式中必须使用的方式,它将返回一个与当前对象数据一致的对象。正如其名,犹如一个模子雕刻而出。克隆类型分为两种:浅克隆、深克隆。 1、浅克隆 浅克隆方式是最简单、最直接的方式。只需要类实现接口ICloneable(在命名空间System.Runtime.InteropServices
阅读全文
摘要:using System; using System.Data; using System.IO; using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; using Micr
阅读全文