04 2014 档案
摘要:C#线程间互相通信主要用到两个类:AutoResetEvent和ManualResetEvent。一、AutoResetEventAutoResetEvent允许线程通过发信号互相通信,线程通过调用AutoResetEvent上的WaitOne来等待信号。如果AutoResetEvent为非终止状态...
阅读全文
摘要:CLR环境中给我们内置了几个常用委托Action、 Action、Func、Predicate,一般我们要用到委托的时候,尽量不要自己再定义一 个委托了,就用系统内置的这几个已经能够满足大部分的需求,且让代码符合规范。一、ActionAction封装的方法没有参数也没有返回值,声明原型为:1 pub...
阅读全文
摘要:序列化是把一个内存中的对象的信息转化成一个可以持久化保存的形式,以便于保存或传输,序列化的主要作用是不同平台之间进行通信,常用的有序列化有json、xml、文件等,下面就逐个讲下这三种序列化的方法。一、序列化为jsonC#中用于对象和json相互转换的原生类有两个:DataContractJsonS...
阅读全文
摘要:Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数。通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。在C#中的Linq中的大部分就是由扩展方法和Lambda 表达式共同来实现,如:1 public static IEnumerable Where(this IEnumerable source, Func predicate);2 public static IEnumerable Select(this IEnumerable source, Func selector);下面使用一个Where方法,体现委托向Lambda 表达式优化的
阅读全文
摘要:C#中的事件是建立在委托的基础上,标准的事件模型应该包括以下几点:声明一个用于定义事件的委托,这里用系统自带的泛型委托原型EventHandler,如:public delegate void EventHandler(object sender,TEventArgse);这里面的TEventArgs是由我们自定义的参数类型,继承自EventArgs基类事件参数的名称以EventArgs结束声明事件的委托原型即EventHandler,它的返回值为void声明事件的委托原型即EventHandler,它有两个参数:sender和e,sender表示事件触发者,e表示事件触发时的参数事件的声明是
阅读全文