摘要: 在优化C#代码或对比某些API的效率时,通常需要测试某个方法的运行时间,可以通过DateTime来统计指定方法的执行时间,也可以使用命名空间System.Diagnostics中封装了高精度计时器QueryPerformanceCounter方法的Stopwatch类来统计指定方法的执行时间: 1.阅读全文
posted @ 2018-11-08 20:29 Minotauros 阅读(952) 评论(5) 编辑
摘要: 一、C#中的泛型引入了类型参数的概念,类似于C++中的模板,类型参数可以使类型或方法中的一个或多个类型的指定推迟到实例化或调用时,使用泛型可以更大程度的重用代码、保护类型安全性并提高性能;可以创建自定义的泛型类型(类、结构、接口、委托)和泛型方法; 1.在泛型类型的定义或泛型方法的声明中,类型参数是阅读全文
posted @ 2018-10-25 17:13 Minotauros 阅读(410) 评论(1) 编辑
摘要: 一、当我们使用关键字delegate声明一个自定义委托类型时,实际上是声明了一个该名称的类类型,继承自抽象类System.MulticastDelegate,还包含实例方法Invoke、BeginInvoke、EndInvoke: 其中的构造函数中第二个参数是native int类型的,这个是什么呢阅读全文
posted @ 2018-10-17 22:57 Minotauros 阅读(530) 评论(1) 编辑
摘要: 本篇内容是特性和反射的最后一篇内容,前面三篇文章: 详解C#特性和反射(一) 详解C#特性和反射(二) 详解C#特性和反射(三) 一、晚期绑定(Late Binding)是一种在编译时不知道类型及其成员,而在运行时创建指定类型的实例并调用其成员的技术,使用命名空间System中的Activator类阅读全文
posted @ 2018-10-09 16:50 Minotauros 阅读(562) 评论(0) 编辑
摘要: 使用反射(Reflection)使得程序在运行过程中可以动态的获取对象或类型的类型信息,然后调用该类型的方法和构造函数,或访问和修改该类型的字段和属性;可以通过晚期绑定技术动态的创建类型的实例;可以获取程序集中的所有类型信息;可以在动态构建新类型;还可以检索元素所添加的特性; ※反射相关的类基本都位阅读全文
posted @ 2018-09-26 20:35 Minotauros 阅读(801) 评论(2) 编辑
摘要: 使用特性(Attribute)可以将描述程序集的信息和描述程序集中任何类型和成员的信息添加到程序集的元数据和IL代码中,程序可以在运行时通过反射获取到这些信息; 一、通过直接或间接的继承自抽象类System.Attribute可以创建自定义的特性类,自定义的特性类必须声明为公共类,命名一般使用Att阅读全文
posted @ 2018-09-20 15:22 Minotauros 阅读(886) 评论(4) 编辑
摘要: 委托(Delegate)是安全封装方法的类型,类似于C和C++中的函数指针,与函数指针不同的是,委托是面向对象的、类型安全的和可靠的; 一、委托类型是CTS中五种基础类型之一,是一种引用类型,表示对具有指定参数列表和返回类型的方法的引用,也是一种特殊的类类型,其类型为System.Multicast阅读全文
posted @ 2018-09-14 11:44 Minotauros 阅读(343) 评论(0) 编辑
摘要: 一、自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: 1.声明泛型方法时,可以在参数列表中使用这个类型参数:void MyFunc<T>(T obj) { };此时在调用该泛型方法时可以省略类型参数的指定由编译器推断其类型,例如:MyFunc<int>(myNu阅读全文
posted @ 2018-11-15 20:54 Minotauros 阅读(350) 评论(2) 编辑
摘要: 在优化C#代码或对比某些API的效率时,通常需要测试某个方法的运行时间,可以通过DateTime来统计指定方法的执行时间,也可以使用命名空间System.Diagnostics中封装了高精度计时器QueryPerformanceCounter方法的Stopwatch类来统计指定方法的执行时间: 1.阅读全文
posted @ 2018-11-08 20:29 Minotauros 阅读(952) 评论(5) 编辑
摘要: 由于枚举的基础类型类型为基本的数值类型,支持位运算,因此可以使用一个值表示多个枚举的组合,在定义枚举时需要指定枚举数为2的幂指数方便进行位运算,即枚举数为1,2,4,8…,或1,1<<1,1<<2…: 此时可以使用位移运算方便的获取多个枚举的组合变量: 或在组合中删除其中一项枚举: 需要判断是否包含阅读全文
posted @ 2018-11-01 18:32 Minotauros 阅读(162) 评论(0) 编辑
摘要: 一、C#中的泛型引入了类型参数的概念,类似于C++中的模板,类型参数可以使类型或方法中的一个或多个类型的指定推迟到实例化或调用时,使用泛型可以更大程度的重用代码、保护类型安全性并提高性能;可以创建自定义的泛型类型(类、结构、接口、委托)和泛型方法; 1.在泛型类型的定义或泛型方法的声明中,类型参数是阅读全文
posted @ 2018-10-25 17:13 Minotauros 阅读(410) 评论(1) 编辑
摘要: 一、当我们使用关键字delegate声明一个自定义委托类型时,实际上是声明了一个该名称的类类型,继承自抽象类System.MulticastDelegate,还包含实例方法Invoke、BeginInvoke、EndInvoke: 其中的构造函数中第二个参数是native int类型的,这个是什么呢阅读全文
posted @ 2018-10-17 22:57 Minotauros 阅读(530) 评论(1) 编辑
摘要: 本篇内容是特性和反射的最后一篇内容,前面三篇文章: 详解C#特性和反射(一) 详解C#特性和反射(二) 详解C#特性和反射(三) 一、晚期绑定(Late Binding)是一种在编译时不知道类型及其成员,而在运行时创建指定类型的实例并调用其成员的技术,使用命名空间System中的Activator类阅读全文
posted @ 2018-10-09 16:50 Minotauros 阅读(562) 评论(0) 编辑
摘要: 类型信息(Type Information)用来表示类型声明的信息,通过抽象基类System.Type的实例存储这些信息,当使用反射时,CLR获取指定类型的Type对象,通过这个对象即可访问该类型的任何信息,是反射的核心用法;有以下几种方式获取指定类型的Type对象: ※如果指定的类型不在全局命名空阅读全文
posted @ 2018-10-04 16:43 Minotauros 阅读(543) 评论(1) 编辑
摘要: 使用反射(Reflection)使得程序在运行过程中可以动态的获取对象或类型的类型信息,然后调用该类型的方法和构造函数,或访问和修改该类型的字段和属性;可以通过晚期绑定技术动态的创建类型的实例;可以获取程序集中的所有类型信息;可以在动态构建新类型;还可以检索元素所添加的特性; ※反射相关的类基本都位阅读全文
posted @ 2018-09-26 20:35 Minotauros 阅读(801) 评论(2) 编辑
摘要: 使用特性(Attribute)可以将描述程序集的信息和描述程序集中任何类型和成员的信息添加到程序集的元数据和IL代码中,程序可以在运行时通过反射获取到这些信息; 一、通过直接或间接的继承自抽象类System.Attribute可以创建自定义的特性类,自定义的特性类必须声明为公共类,命名一般使用Att阅读全文
posted @ 2018-09-20 15:22 Minotauros 阅读(886) 评论(4) 编辑
摘要: 委托(Delegate)是安全封装方法的类型,类似于C和C++中的函数指针,与函数指针不同的是,委托是面向对象的、类型安全的和可靠的; 一、委托类型是CTS中五种基础类型之一,是一种引用类型,表示对具有指定参数列表和返回类型的方法的引用,也是一种特殊的类类型,其类型为System.Multicast阅读全文
posted @ 2018-09-14 11:44 Minotauros 阅读(343) 评论(0) 编辑