C#高级编程(第九版) 知识点梳理

---恢复内容开始---

第二章 核心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<T> task1= MethodAsync(new T());

Task<T> task2= MethodAsync(new T());

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章 网络

上一篇:item 4: 知道怎么去看推导的类型


下一篇:C++ new运算符