摘要: 本想接着上一篇详解泛型接着写一篇使用泛型时需要注意的一个性能问题,但是后来想着不如将之前的详解XX系列更正为现在的效率优化XX系列,记录在工作时遇到的一些性能优化的经验和技巧,如果有什么不足,还请大家多多指出; 在使用集合时,通常为了防止装箱操作而选择List<T>、Dictionary<TKey, 阅读全文
posted @ 2018-11-30 11:24 Minotauros 阅读(4128) 评论(2) 推荐(10) 编辑
摘要: 一、前面两篇文章分别介绍了定义泛型类型、泛型委托、泛型接口以及声明泛型方法: 详解C#泛型(一) 详解C#泛型(二) 首先回顾下如何构建泛型类: 其中,尖括号<>中的T代表的是该泛型类的类型参数,在使用时可以指定其类型,例如,指定类型参数为整数类型,创建封闭式构造类MyClass<int>: 二、这 阅读全文
posted @ 2018-11-23 12:16 Minotauros 阅读(787) 评论(1) 推荐(2) 编辑
摘要: 一、自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: 1.声明泛型方法时,可以在参数列表中使用这个类型参数:void MyFunc<T>(T obj) { };此时在调用该泛型方法时可以省略类型参数的指定由编译器推断其类型,例如:MyFunc<int>(myNu 阅读全文
posted @ 2018-11-15 20:54 Minotauros 阅读(982) 评论(2) 推荐(2) 编辑
摘要: 在优化C#代码或对比某些API的效率时,通常需要测试某个方法的运行时间,可以通过DateTime来统计指定方法的执行时间,也可以使用命名空间System.Diagnostics中封装了高精度计时器QueryPerformanceCounter方法的Stopwatch类来统计指定方法的执行时间: 1. 阅读全文
posted @ 2018-11-08 20:29 Minotauros 阅读(4494) 评论(6) 推荐(12) 编辑
摘要: 由于枚举的基础类型类型为基本的数值类型,支持位运算,因此可以使用一个值表示多个枚举的组合,在定义枚举时需要指定枚举数为2的幂指数方便进行位运算,即枚举数为1,2,4,8…,或1,1<<1,1<<2…: 此时可以使用位移运算方便的获取多个枚举的组合变量: 或在组合中删除其中一项枚举: 需要判断是否包含 阅读全文
posted @ 2018-11-01 18:32 Minotauros 阅读(2821) 评论(0) 推荐(7) 编辑
摘要: 一、C#中的泛型引入了类型参数的概念,类似于C++中的模板,类型参数可以使类型或方法中的一个或多个类型的指定推迟到实例化或调用时,使用泛型可以更大程度的重用代码、保护类型安全性并提高性能;可以创建自定义的泛型类型(类、结构、接口、委托)和泛型方法; 1.在泛型类型的定义或泛型方法的声明中,类型参数是 阅读全文
posted @ 2018-10-25 17:13 Minotauros 阅读(2422) 评论(1) 推荐(4) 编辑
摘要: 一、当我们使用关键字delegate声明一个自定义委托类型时,实际上是声明了一个该名称的类类型,继承自抽象类System.MulticastDelegate,还包含实例方法Invoke、BeginInvoke、EndInvoke: 其中的构造函数中第二个参数是native int类型的,这个是什么呢 阅读全文
posted @ 2018-10-17 22:57 Minotauros 阅读(1093) 评论(1) 推荐(2) 编辑
摘要: 本篇内容是特性和反射的最后一篇内容,前面三篇文章: 详解C#特性和反射(一) 详解C#特性和反射(二) 详解C#特性和反射(三) 一、晚期绑定(Late Binding)是一种在编译时不知道类型及其成员,而在运行时创建指定类型的实例并调用其成员的技术,使用命名空间System中的Activator类 阅读全文
posted @ 2018-10-09 16:50 Minotauros 阅读(1178) 评论(0) 推荐(2) 编辑
摘要: 类型信息(Type Information)用来表示类型声明的信息,通过抽象基类System.Type的实例存储这些信息,当使用反射时,CLR获取指定类型的Type对象,通过这个对象即可访问该类型的任何信息,是反射的核心用法;有以下几种方式获取指定类型的Type对象: ※如果指定的类型不在全局命名空 阅读全文
posted @ 2018-10-04 16:43 Minotauros 阅读(1258) 评论(1) 推荐(3) 编辑
摘要: 使用反射(Reflection)使得程序在运行过程中可以动态的获取对象或类型的类型信息,然后调用该类型的方法和构造函数,或访问和修改该类型的字段和属性;可以通过晚期绑定技术动态的创建类型的实例;可以获取程序集中的所有类型信息;可以在动态构建新类型;还可以检索元素所添加的特性; ※反射相关的类基本都位 阅读全文
posted @ 2018-09-26 20:35 Minotauros 阅读(2269) 评论(2) 推荐(3) 编辑