C#后台架构师成长之路-高阶知识体系核心
了解了这些东西,熟悉了运用基本都是高工级别的了,其他修修补补就行了。。。。
1、三种预定义特性:attributeUsage、Conditional、obsolete,允许创建自定义特性,派生自System.Attribute类
2、委托和事件
2.1、将方法作为方法的参数:委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递
2.2、将方法绑定到委托:
可以将多个方法赋给同一个委托,或者叫将多个方法绑定到同一个委托,当调用这个委托的时候,将依次调用其所绑定的方法
2.3、声明一个事件不过类似于声明一个进行了封装的委托类型的变量而已,事件应该由事件发布者触发,而不应该由事件的客户端(客户程序)来触发
2.4、很多的委托定义返回值都为 void,如果定义了返回值,那么多个订阅者的方法都会向发布者返回数值,结果就是后面一个返回的方法值将前面的返回值覆盖掉了,因此,实际上只能获得最后一个方法调用的返回值
2.5、四种委托类型:
Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型;
Action是无返回值的泛型委托,至少0个参数,至多16个参数;
Func是有返回值的泛型委托,Func<T1,T2,,T3,int> 表示传入参数为T1,T2,,T3(泛型)返回值为int的委托,Func至少0个参数,至多16个参数,根据返回值泛型返回。必须有返回值,不可void;
predicate 是返回bool型的泛型委托,Predicate有且只有一个参数,返回值固定为bool;
3、流与文件的操作、多线程、程序集以及反射、XML文档处理
4、托管代码以及非托管代码
4.1、托管代码(Managed Code)就是中间语言(IL)代码,在公共语言运行库(CLR)中运行。编译器把代码编译成中间语言,当方法被调用时,CLR把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用使用。随着程序集的运行,CLR提供各种服务:内存管理,安全管理,线程管理,垃圾回收,类型检查等等
4.2非托管代码,直接编译成目标计算机码,在公共语言运行库环境的外部,由操作系统直接执行的代码,代码必须自己提供垃圾回收,类型检查,安全支持等服务。如需要内存管理等服务,必须显示调用操作系统的接口,通常调用Windows SDK所提供的API来实现内存管理
5、Web Service、基于Sockets模型的网络编程