---恢复内容开始---
第二章 核心C#
2.7 命名空间可以使用别名,但是这样做有什么好处?
2.12 C#预处理器指令
#define DEBUG
#if DEBUG
Console.WriteLine("hahaha...");
#endif
---恢复内容结束---
第二章 核心C#
2.7 命名空间可以使用别名,但是这样做有什么好处?
2.12 C#预处理器指令
#define DEBUG
#if DEBUG
Console.WriteLine("hahaha...");
#endif
第七章
运算符重载 关键字 operator
第八章 委托
委托的好处:
1.相当于用方法作为另一方法参数(类似于C的函数指针)
2.在两个不能直接调用的方法中作为桥梁,如:在多线程中的跨线程的方法调用就得用委托
3.当不知道方法具体实现什么时使用委托,如:事件中使用委托
第13章 异步编程
13.3.5 异步编程 多个异步方法并行
Task
Task
awit Task.WhenAll(task1,task2);
当任务之间不存在依赖关系时,可以并发
第14章 内存管理和指针
托管代码自动执行垃圾回收
非托管代码需要自己实现垃圾回收
指针:了解一下
第15章 反射
15.2 自定义特性
System.Attribute 特性类
[AttributeUsage(AttributeTargets.Property,AllowMultiple=false,Inherited=false)] 自定义特性时需要增加此特性的使用范围
public class SelfdefineAttribute:Attribute 声明的自定义特性类必须继承Attribute
15.3 反射
System.Type 抽象基类:主要是获取实例的数据类型
System.Reflection.Assembly
第16章 错误和异常
System.Exception
try{}catch(){}finally{}
一般在finally释放资源
第19章 程序集
程序集:dll或者exe文件
第20章 诊断
(1)代码协定
NuGet:Code Contracts Editor Extensions
System.Diagnostics.Contracts
前提条件,后置条件:必须放在方法开头
(2)跟踪
TraceSource类
暂时不太明白跟踪的意义在哪里?定位程序报错的位置?
(3)事件日志
第21章 任务、线程和同步
System.Threading
System.Threading.Tasks
任务并行性和数据并行性:
Parallel类
Parallel.For 循环 数据并行性 P560示例
Parallel.Invoke() 任务并行性
为了更好的控制并行动作,可以使用Task类,创建的是后台线程
一般任务使用线程池,但也有长时间运行的任务需要单独创建线程
任务最新形式:Task.Run( () => "OK" );
连续任务:ContinueWith()
如果需要更多控制,使用 Thread类创建前台线程
前台线程和后台线程唯一区别就是:应用程序必须运行完所有的前台线程才可以退出
21.7线程问题
争用条件和死锁
lock(object){}
21.8 同步
为了解决死锁问题
lock语句 主力
Interlocked类 用于变量
Monitor类
第22章 安全性
IIdentity接口
IPrincipal接口
System.Security.Cryptography 加密的名称空间
第24章 文件和注册表操作
暂时跳过
第25章 事务处理
System.Transactions
TransactionScope scope = new TransactionScope();
scope.Complete();
System.EnterpriseServices 自动事务处理
优点:多个对象运行在同一个事务中
缺点:需要COM+主机模型,使用这个技术的类必须派生自基类 ServicedComponent
隔离级别:
(1)脏读
(2)不可重复读
(3)幻读
第26章 网络