上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 28 下一页
  2017年6月13日
摘要: 很多人都说使用反射会有性能问题,那到底会比直接调用慢多少呢,下面就来测试一下。 直接调用vs反射调用 下面就来写个demo来验证下直接调用和反射调用的性能差异,代码如下: 测试结果: 从100万次调用结果来看,确实就像很多人所说的,两者在性能上具有数量级的差距。 为什么反射有性能损失 既然反射性能有 阅读全文
posted @ 2017-06-13 17:18 永远的麦子 阅读(2375) 评论(1) 推荐(0) 编辑
摘要: 前面总结了反射的使用,这一篇结合一个完整的项目来总结下反射的实际应用。 项目结构 如下图: 定义插件接口 在项目ConsoleApplication6.IService中,定义了两个接口,Run代表行驶,Trun代表转向,如下代码: 插件程序实现 这里新建了两个项目分别实现插件程序,分别是Conso 阅读全文
posted @ 2017-06-13 15:30 永远的麦子 阅读(698) 评论(0) 推荐(0) 编辑
摘要: 这一篇文章来总结下怎么使用反射的。 加载程序集 要加载程序集,可以调用 Assembly的LoadXXX系列方法。 1,Assembly.Load方法 需要注意的是: 1)查找顺序,首先去GAC查找,如果没找到,则去应用程序的基目录查找,如果都没找到,则会抛出FileNotFoundExceptio 阅读全文
posted @ 2017-06-13 14:49 永远的麦子 阅读(522) 评论(0) 推荐(0) 编辑
  2017年6月12日
摘要: 反射是.net中非常有用的特性。 什么是反射 可以用一句话来概括就是:基于程序集和元数据,可以动态创建某个类型的实例,调用方法,和访问对象成员的一种能力。 为什么要使用反射 在编译时无法确定要调用的对象的时候,就不得不使用反射。 反射的应用场景 最常见的应用场景有: 1,基于工厂模式实现的数据库切换 阅读全文
posted @ 2017-06-12 17:49 永远的麦子 阅读(716) 评论(0) 推荐(0) 编辑
  2017年6月9日
摘要: 在面试的时候经常会被问到,委托和事件的联系和区别?之前也一直没有彻底搞明白,下面就来总结一下。 从一个有趣的需求入手。有三个角色,猫,老鼠和主人,当猫叫的时候,老鼠开始逃跑,主人则从睡梦中惊醒。 使用事件实现 如下代码: 通过demo可以总结: 1,定义和使用事件的流程,如下图: 2,定义事件参数要 阅读全文
posted @ 2017-06-09 17:43 永远的麦子 阅读(533) 评论(0) 推荐(3) 编辑
摘要: .net 3.5引入了Linq,lambda表达式,所以委托的创建变得更加简单和优雅了。 .net 3.5中的委托 引入lambda表达式后,就不需要再使用匿名方法了,使得创建委托的方式更加简单和优雅。其实如果lambda表达式先引入,那就不会有匿名方法了。 Lambda表达式在C#中的写法是“ar 阅读全文
posted @ 2017-06-09 10:49 永远的麦子 阅读(545) 评论(0) 推荐(1) 编辑
  2017年6月8日
摘要: 由于.net 2.0引入了匿名方法,所以创建委托的方式可以更简化了。 .net 2.0中的委托 有了匿名方法,上一篇的例子可以简化为: 可以看到,不要再去单独定义类型和方法了,只需要使用内联的语法实现就可以了。 阅读全文
posted @ 2017-06-08 17:51 永远的麦子 阅读(536) 评论(0) 推荐(1) 编辑
摘要: 上一篇已经演示了使用委托实现一个多语言问候的程序,这一篇文章来总结一下在.net 1.x中委托的使用方法。 既然委托是一个类型(class),那么它就要经历像类一个先声明,然后new一个对象,最后调用的过程。 .net 1.x中的委托 在.net 1.x中委托的使用是这样的,如下代码: 从上面代码可 阅读全文
posted @ 2017-06-08 17:28 永远的麦子 阅读(572) 评论(0) 推荐(1) 编辑
摘要: 委托是.net中非常重要的特性,自.net 1.x版本就包含了,委托在项目开发过程中应用得非常多,但是一直以来很多同学对其理解得不是非常清楚(也包括我,虽然做开发很多年了,可能很多地方不知不觉也使用到了委托,但是仍然不是很清楚),那么我会整理一个系列文章来总结和加深一下对委托的印象。 什么是委托 可 阅读全文
posted @ 2017-06-08 16:42 永远的麦子 阅读(807) 评论(0) 推荐(4) 编辑
  2017年6月5日
摘要: 克隆对象在开发过程中经常会遇到,有些时候需要浅克隆,有些时候需要深克隆,具体它们之间有什么区别,以及实现方式有哪些,在这里总结一下。 实现深克隆有以下几种方法。 手动 代码如下: 反射 代码如下: 扩展方法: 1 public static class DeepCopyHelper 2 { 3 pu 阅读全文
posted @ 2017-06-05 11:29 永远的麦子 阅读(1492) 评论(0) 推荐(0) 编辑
  2017年6月2日
摘要: 去重和排序是开发过程中经常碰到的问题,这篇文章就来总结一下。 去重 方法1:使用内置的distinct 代码如下: //方法1:使用默认的distinct方法 //只能针对基元类型列表,对于自定义类型组合字段条件需要自定义相等比较器实现IEqualityComparer接口,比较麻烦 var result1 = list.Distinct().ToList(); 方法2:使用GroupBy 代码... 阅读全文
posted @ 2017-06-02 15:39 永远的麦子 阅读(1625) 评论(0) 推荐(1) 编辑
  2016年8月16日
摘要: 我们在平常开发过程中,在设计数据的时候,经常碰到数据类型选择的问题,为了更快,更合适地选择正确的数据类型,所以在这里做个总结。 分类 sql server 数据类型 c# 数据类型 描述 应用场景 字符和字符串 char(n) ... 阅读全文
posted @ 2016-08-16 14:22 永远的麦子 阅读(1454) 评论(0) 推荐(1) 编辑
摘要: 在设计数据库的时候,经常碰到那些表示状态或类型的字段,比如订单的状态,或者支付的类型。要为这一类数据选择合适的数据类型,比较常用的有以下两种方法。 方法一:tinyint+byte(枚举) 数据库中类型:tinyint c#中类型:byte,如代码: 方法二:varchar(xx)+string(const) 数据库中类型:varchar(10) c#中类型:string(cons... 阅读全文
posted @ 2016-08-16 10:29 永远的麦子 阅读(4123) 评论(1) 推荐(0) 编辑
  2016年7月15日
摘要: 在平常的开发过程中,经常碰到需要将string转化成byte[]字节数组的情形,有两种方法,在这里总结一下。 使用MemoryStream 代码如下。 1 using (MemoryStream sb = new MemoryStream()) 2 { 3 using (var writer = new ... 阅读全文
posted @ 2016-07-15 18:18 永远的麦子 阅读(501) 评论(0) 推荐(0) 编辑
摘要: .net自带的json序列化器,JavaScriptSerializer和DataContractJsonSerializer,都是序列化成微软的datetime json格式,e.g. "\/Date(1198908717056)\/" 如果你将json序列化器换成json.net,可能会碰到序列化datetime格式的问题。 json.net的行为是这样的。 4.5,序列化成ISO标准时... 阅读全文
posted @ 2016-07-15 18:04 永远的麦子 阅读(4096) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 28 下一页