摘要: 1.平台互操作性和不安全的代码:C#功能强大,但有些时候,它的表现仍然有些“力不从心”,所以我们只能摒弃它所提供的所有安全性,转而退回到内存地址和指针的世界。 C#通过3种方式对此提供支持。 (1)第一种方式是通过平台调用(Platform Invoke,P/Invoke)来调用非托管代码DLL所公 阅读全文
posted @ 2017-01-23 22:36 殇曲? 阅读(555) 评论(0) 推荐(0) 编辑
摘要: 1.在多个线程的同步数据中,避免使用this、typeof(type)、string进行同步锁,使用这3个容易造成死锁。 2.使用Interlocked类:我们一般使用的互斥锁定模式(同步数据)为Lock关键字(即Monitor类),这个同步属于代价非常高的一种操作。除了使用Monitor之外,还有 阅读全文
posted @ 2017-01-23 21:51 殇曲? 阅读(904) 评论(0) 推荐(0) 编辑
摘要: 1.Task概述:Task是对操作系统线程的抽象,目的是使线程池能高效地管理线程的分配和回收,Task使用的底层线程属于一种共享资源,任务需要互相协作,并及时归还线程,以便用相同的共享资源(线程)满足其他请求。 2.Task.AsyncState:获取在创建 Task 时提供的状态对象,如果未提供, 阅读全文
posted @ 2017-01-23 20:41 殇曲? 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 1.List.BinarySearch():BinarySearch()采用的是二分搜索算法,要求元素已经排好序,其特点是假如元素没有找到,会返回一个负整数,该值的按位取反(~)结果是“大于被查找元素的下一个元素”的索引,如果没有更大的值,则是元素的总数。这样一来就可以在列表中的特定位置方便地插入新 阅读全文
posted @ 2017-01-23 20:26 殇曲? 阅读(455) 评论(0) 推荐(1) 编辑
摘要: 1.在使用反射时,反射可以绕过安全访问级别(private、protected)修饰的类或属性,来获取需要的信息。 2.泛型的反射:可以使用Type.ContainsGenericParameters这个属性来判断一个类或方法是否包含尚未设置的泛型实参,Type.IsGenericType属性表示是 阅读全文
posted @ 2017-01-23 20:26 殇曲? 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 1.匿名类型:匿名类型是C#3.0新增的特性,是强类型(由编译器后台在生成为CIL时,自动声明的代码定义类型),声明与初始化属性后其属性是尽读属性。只有在属性的名称、顺序、类型一致时,多个声明匿名变量才会共用同一个匿名类型。其ToString()方法已重写了返回的是属性名称与值的文本。 2.隐式局部 阅读全文
posted @ 2017-01-23 18:34 殇曲? 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 1.多播委托:由与delegate关键字声明的委托,在编译后默认继承Delegate与MulticastDelegate类型,所以声明的委托自然就含有多播委托的特性,即一个委托变量可以调用一个方法链(多个相同签名的方法)。在C#中,多播委托的实现是一个通用的模式,目的是避免大量的手工编码,这个模式称 阅读全文
posted @ 2017-01-23 18:30 殇曲? 阅读(487) 评论(0) 推荐(0) 编辑