摘要: 微软在C# 5中引入了async、await这两个异步编程的关键字,要使用这两个关键字需要你的IDE支持C#5.0语法,也就意味着你需要使用VS 2012版本以上IDE,或者在Vs2010卸载其编译器在重新安装,这并不是本文的重点,有需求的朋友点击这篇博客,现在都快接近2019年,VS2019 预览 阅读全文
posted @ 2018-12-11 13:38 Fode 阅读(4480) 评论(0) 推荐(0) 编辑
摘要: 之前在上篇博客说到用表达式来替代反射机制,可以获得较高的性能提升。这篇我们来说说用Emit技术来替代反射。 System.Reflection.Emit命名空间类可用于动态发出Microsoft中间语言(MSIL)代码,以便生成的代码可以直接执行。反射也用于获取有关类及其成员的信息。换句话说,反射是 阅读全文
posted @ 2018-12-07 21:40 Fode 阅读(2522) 评论(1) 推荐(9) 编辑
摘要: 本节重点不讲反射机制,而是讲lambda表达式树来替代反射中常用的获取属性和方法,来达到相同的效果但却比反射高效。 每个人都知道,用反射调用一个方法或者对属性执行SetValue和GetValue操作的时候都会比直接调用慢很多,这其中设计到CLR中内部的处理,不做深究。然而,我们在某些情况下又无法不 阅读全文
posted @ 2018-12-07 01:35 Fode 阅读(3778) 评论(6) 推荐(9) 编辑
摘要: 1、浅拷贝与深拷贝的定义 什么是拷贝?拷贝即为常说的复制或者克隆一个对象,并且通过拷贝这些源对象创建新的对象。其中拷贝分为浅拷贝和深拷贝。对于拷贝出来的对象,在使用上有很大的差异,特别是在引用类型上。 浅拷贝:将对象中的所有字段复制到新的对象中。其中,值类型字段被复制到新对象中后,在新对象中的修改不 阅读全文
posted @ 2018-12-05 21:51 Fode 阅读(1969) 评论(0) 推荐(2) 编辑
摘要: 为了使用C#提供的XML注释功能,你的注释应该使用特殊的注释语法(///)开头。在///之后,你可以使用预先定义的标签注释你的代码,也可以插入你自己定义的标签。你定制的标签将会在随后加入到生成的注释文档中。 预定义的标签 用处 <c> 将说明中的文本标记为代码<code> 提供了一种将多行指示为代码 阅读全文
posted @ 2019-06-23 03:15 Fode 阅读(4368) 评论(0) 推荐(0) 编辑
摘要: 什么是dynamic类型?微软给出的官方文档中这样解释:在通过 dynamic 类型实现的操作中,该类型的作用是绕过编译时类型检查。 改为在运行时解析这些操作。 dynamic 类型简化了对 COM API(例如 Office Automation API)、动态 API(例如 IronPython 阅读全文
posted @ 2018-12-04 21:03 Fode 阅读(858) 评论(1) 推荐(3) 编辑
摘要: 字符串作为所有编程语言中使用最频繁的一种基础数据类型。如果使用不慎,将会造成不必要的内存开销,为此而付出代价。而要优化此类型,从以下两点入手: 1、尽量少的装箱 2、避免分配额外的内存空间 先从第一点装箱的操作说起,查看如下代码: 其中间语言IL代码为如下: 不难看出,上述代码发生了装箱的操作(IL 阅读全文
posted @ 2018-12-03 21:58 Fode 阅读(939) 评论(1) 推荐(1) 编辑