随笔 - 410  文章 - 0  评论 - 519  阅读 - 147万 

随笔分类 -  C#基础

.net基础系列
摘要:这里汇总了.net基础的相关文章,方便查阅! .net基础 参考资料 http://www.cnblogs.com/JeffreyZhao/archive/2009/08/05/from-delegate-to-others.html http://www.cnblogs.com/JimmyZhan 阅读全文
posted @ 2017-07-07 18:03 永远的麦子 阅读(1178) 评论(0) 推荐(0) 编辑
GC垃圾回收
摘要:我们在开发需求的时候,可能很少关注到垃圾回收,因为我们绝大多数的时候都是使用的托管资源,托管资源的内存回收.net已经帮我们做了,但是.net的内存回收不是实时的,所以我们还是要关注下.net的垃圾回收。 什么是GC GC即Garbage Collection,用一句话总结就是:.net内置的一种垃 阅读全文
posted @ 2017-07-04 19:13 永远的麦子 阅读(1275) 评论(1) 推荐(0) 编辑
多线程(7)多线程中的异常处理
摘要:多线程使用过程中,除了线程同步的问题要考虑外,异常处理也是经常要面对的事情。 默认主线程捕获不到异步线程的异常 如下代码: 1 namespace ConsoleApplication29 2 { 3 class Program 4 { 5 static void Main(string[] arg 阅读全文
posted @ 2017-07-01 18:29 永远的麦子 阅读(7580) 评论(0) 推荐(0) 编辑
多线程(6)线程同步
摘要:使用多线程很容易,但是如果多个线程同时访问一个共享资源时而不加以控制,就会导致数据损坏。所以多线程并发时,必须要考虑线程同步(或称线程安全)的问题。 什么是线程同步 多个线程同时访问共享资源时,使多个线程顺序(串行)访问共享资源的机制。 注意: 1,共享资源,比如全局变量和静态变量。 2,访问,一般 阅读全文
posted @ 2017-07-01 17:28 永远的麦子 阅读(884) 评论(0) 推荐(1) 编辑
多线程(5)async&await
摘要:.net 4.0的Task已经让我们可以非常简单地使用多线程,并且可以有返回值,也可以支持线程的取消等操作,可谓已经很强大了。但.net 4.5为我们带来了async&await,使得实现多线程的写法更简单,更优美,更符合线性思维。 下面通过一个例子来演示通过Task和async&await分别如何 阅读全文
posted @ 2017-06-23 19:03 永远的麦子 阅读(938) 评论(0) 推荐(1) 编辑
多线程(4)Task
摘要:使用线程池使得创建线程已经很简单了,但是使用线程池不支持线程的取消,完成和失败通知等交互操作,为了解决这些问题,.net 4.0带来了TPL(Task Parallel Library)任务并行库,下面就来总结下Task的使用。 创建和运行任务 在.net 4.0下使用task创建一个线程非常简单, 阅读全文
posted @ 2017-06-23 17:31 永远的麦子 阅读(1834) 评论(0) 推荐(0) 编辑
多线程(3)ThreadPool
摘要:使用Thread类已经可以创建并启动线程了,但是随着开启的线程越来越多,线程的创建和终止都需要手动操作,非常繁琐,另一个问题是,开启更多新的线程但是没有用的线程没有及时得到终止的时候,会占用越来越多的系统资源,影响性能。 所以,.net为我们引入了ThreadPool(线程池),我们只需要把要执行的 阅读全文
posted @ 2017-06-20 17:45 永远的麦子 阅读(1014) 评论(0) 推荐(0) 编辑
多线程(2)Thread
摘要:我们先从最基础的Thread说起。 创建并启动线程 创建并启动一个线程,如下代码: 1 namespace ConsoleApplication17 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 var thread 阅读全文
posted @ 2017-06-20 17:05 永远的麦子 阅读(668) 评论(0) 推荐(2) 编辑
多线程(1)认识多线程
摘要:多线程在项目开发过程中非常非常重要,这个系列就来详细总结一下,首先认识一下多线程。 windows为什么要支持多线程 计算机的早期时代,操作系统没有线程的概念,整个系统只运行着一个执行线程,其中包含操作系统代码和应用程序代码。只用一个执行线程的问题在于,长时间运行的任务会阻止其他任务的执行。例如16 阅读全文
posted @ 2017-06-20 15:36 永远的麦子 阅读(1137) 评论(2) 推荐(2) 编辑
泛型
摘要:泛型是.net 2.0就有的特性,泛型在我们的平常的开发过程中使用得也非常多,为了更深刻地理解泛型,这篇文章就来总结一下。 什么是泛型 可以用下面2点来概括: 1,首先泛型也是一种类型(可以通过IL代码看出来)。 2,泛型提供了类型参数化的能力,允许用不同的类型进行实例化,可以简单地理解为:泛型是类 阅读全文
posted @ 2017-06-20 11:46 永远的麦子 阅读(915) 评论(0) 推荐(2) 编辑
反射(4)反射性能问题:直接调用vs反射调用
摘要:很多人都说使用反射会有性能问题,那到底会比直接调用慢多少呢,下面就来测试一下。 直接调用vs反射调用 下面就来写个demo来验证下直接调用和反射调用的性能差异,代码如下: 测试结果: 从100万次调用结果来看,确实就像很多人所说的,两者在性能上具有数量级的差距。 为什么反射有性能损失 既然反射性能有 阅读全文
posted @ 2017-06-13 17:18 永远的麦子 阅读(2575) 评论(1) 推荐(0) 编辑
反射(3)反射应用:一个插件项目
摘要:前面总结了反射的使用,这一篇结合一个完整的项目来总结下反射的实际应用。 项目结构 如下图: 定义插件接口 在项目ConsoleApplication6.IService中,定义了两个接口,Run代表行驶,Trun代表转向,如下代码: 插件程序实现 这里新建了两个项目分别实现插件程序,分别是Conso 阅读全文
posted @ 2017-06-13 15:30 永远的麦子 阅读(700) 评论(0) 推荐(0) 编辑
反射(2)使用反射
摘要:这一篇文章来总结下怎么使用反射的。 加载程序集 要加载程序集,可以调用 Assembly的LoadXXX系列方法。 1,Assembly.Load方法 需要注意的是: 1)查找顺序,首先去GAC查找,如果没找到,则去应用程序的基目录查找,如果都没找到,则会抛出FileNotFoundExceptio 阅读全文
posted @ 2017-06-13 14:49 永远的麦子 阅读(523) 评论(0) 推荐(0) 编辑
反射(1)认识反射
摘要:反射是.net中非常有用的特性。 什么是反射 可以用一句话来概括就是:基于程序集和元数据,可以动态创建某个类型的实例,调用方法,和访问对象成员的一种能力。 为什么要使用反射 在编译时无法确定要调用的对象的时候,就不得不使用反射。 反射的应用场景 最常见的应用场景有: 1,基于工厂模式实现的数据库切换 阅读全文
posted @ 2017-06-12 17:49 永远的麦子 阅读(717) 评论(0) 推荐(0) 编辑
委托(5)委托和事件
摘要:在面试的时候经常会被问到,委托和事件的联系和区别?之前也一直没有彻底搞明白,下面就来总结一下。 从一个有趣的需求入手。有三个角色,猫,老鼠和主人,当猫叫的时候,老鼠开始逃跑,主人则从睡梦中惊醒。 使用事件实现 如下代码: 通过demo可以总结: 1,定义和使用事件的流程,如下图: 2,定义事件参数要 阅读全文
posted @ 2017-06-09 17:43 永远的麦子 阅读(534) 评论(0) 推荐(3) 编辑
委托(4).net 3.5中的委托
摘要:.net 3.5引入了Linq,lambda表达式,所以委托的创建变得更加简单和优雅了。 .net 3.5中的委托 引入lambda表达式后,就不需要再使用匿名方法了,使得创建委托的方式更加简单和优雅。其实如果lambda表达式先引入,那就不会有匿名方法了。 Lambda表达式在C#中的写法是“ar 阅读全文
posted @ 2017-06-09 10:49 永远的麦子 阅读(546) 评论(0) 推荐(1) 编辑
委托(3).net 2.0中的委托
摘要:由于.net 2.0引入了匿名方法,所以创建委托的方式可以更简化了。 .net 2.0中的委托 有了匿名方法,上一篇的例子可以简化为: 可以看到,不要再去单独定义类型和方法了,只需要使用内联的语法实现就可以了。 阅读全文
posted @ 2017-06-08 17:51 永远的麦子 阅读(539) 评论(0) 推荐(1) 编辑
委托(2).net 1.x中的委托
摘要:上一篇已经演示了使用委托实现一个多语言问候的程序,这一篇文章来总结一下在.net 1.x中委托的使用方法。 既然委托是一个类型(class),那么它就要经历像类一个先声明,然后new一个对象,最后调用的过程。 .net 1.x中的委托 在.net 1.x中委托的使用是这样的,如下代码: 从上面代码可 阅读全文
posted @ 2017-06-08 17:28 永远的麦子 阅读(572) 评论(0) 推荐(1) 编辑
委托(1)认识委托
摘要:委托是.net中非常重要的特性,自.net 1.x版本就包含了,委托在项目开发过程中应用得非常多,但是一直以来很多同学对其理解得不是非常清楚(也包括我,虽然做开发很多年了,可能很多地方不知不觉也使用到了委托,但是仍然不是很清楚),那么我会整理一个系列文章来总结和加深一下对委托的印象。 什么是委托 可 阅读全文
posted @ 2017-06-08 16:42 永远的麦子 阅读(819) 评论(0) 推荐(4) 编辑
克隆对象的几种方法
摘要:克隆对象在开发过程中经常会遇到,有些时候需要浅克隆,有些时候需要深克隆,具体它们之间有什么区别,以及实现方式有哪些,在这里总结一下。 实现深克隆有以下几种方法。 手动 代码如下: 反射 代码如下: 扩展方法: 1 public static class DeepCopyHelper 2 { 3 pu 阅读全文
posted @ 2017-06-05 11:29 永远的麦子 阅读(1494) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示