随笔分类 - CLR Via CSharp读书笔记
CLR Via CSharp读书笔记(29) - 混合线程同步构造
摘要:{TODO:}
阅读全文
CLR Via CSharp读书笔记(28) - 基元线程同步构造
摘要:{TODO:}
阅读全文
CLR Via CSharp读书笔记(27) - IO限制的异步操作
摘要:{TODO:}
阅读全文
CLR Via CSharp读书笔记(26) - 计算限制的异步操作
摘要:执行上下文:执行上下文包括安全设置(压缩栈、Thread的Principal属性和Windows身份),宿主设置(System.Threading.HostExecutionContextManager)以及逻辑调用上下文数据(System.Runtime.Remoting.Messaging.Ca...
阅读全文
CLR Via CSharp读书笔记(25):线程基础
摘要:进程与线程进程:应用程序的一个实例使用的资源的集合。每个进程都被赋予了一个虚拟地址空间。线程:对CPU进行虚拟化,可以理解为一个逻辑CPU.线程要素线程包括以下要素:1. 线程内核对象, 其中包含 1)一组对线程进行描述的属性 2)线程上下文,即包含CPU寄存器的集合的一个内存块2. 线程环境块...
阅读全文
CLR Via CSharp读书笔记(24):运行时序列化
摘要:{TODO:}
阅读全文
CLR Via CSharp读书笔记(23):程序集加载和反射
摘要:#1 加载程序集Assembly.Load:public class Assembly{ public static Assembly Load(AssemblyName assemblyRef); public static Assembly Load(String assemblyS...
阅读全文
CLR Via CSharp读书笔记(22):CLR寄宿和应用程序域
摘要:#1 CLR寄宿:开发CLR时,Microsoft实际是将他实现成包含在一个dll中的COM服务器。Microsoft为CLR定义了一个标准的COM接口,并为该接口和COM服务器分配了GUID。安装.NET Framework时,代表CLR的COM服务器在Windows注册表中注册。任何Window...
阅读全文
CLR Via CSharp读书笔记(21):自动内存管理(垃圾回收)
摘要:#1 垃圾回收平台的基本工作原理:访问一个资源所需的具体步骤:1)调用IL指令newobj,为代表资源的类型分配内存。在C#中使用new操作符,编译器就会自动生成该指令。2)初始化内存,设置资源的初始状态,使资源可用。类型的实例构造器负责设置该初始状态。3)访问类型的成员(可根据需要反复)来使用资源...
阅读全文
CLR Via CSharp读书笔记(20):异常和状态管理
摘要:重要提示:异常是指成员没有完成它的名称宣称可以完成的行动。一个try块至少要有一个关联的catch块或finally块,单独一个try块是没有意义的,C#也不允许。需要注意什么情况下异常会重置起点。throw e会重置起点,而throw不会重置起点。未处理的异常会向Windows事件日志写一条记录.
阅读全文
CLR Via CSharp读书笔记(19):可空值类型
摘要:可空值类型首先表示一个值类型,然后表示该值类型可以为空。值类型原本是不能为空的,为了表达一个值类型为空,引入了System.Nullable类型,该类型本身也是一个值类型。在C#中,Int32?等价于Nullable. ??等价于?:。private static void NullCoalesci...
阅读全文
CLR Via CSharp读书笔记(18):定制Attributes
摘要:检测定制的attribute:定制attribute之后,主要在于检测。主要的方法有System.Type的IsDefined方法,System.Attribute类定义的三个静态方法用以获取与一个目标关联的attribute: IsDefined, GetCustomAttributes(用于将A...
阅读全文
CLR Via CSharp读书笔记(16):数组
摘要:初始化数组元素:class Program{ static void Main(string[] args) { String[] names = new String[] { "Adian", "Grant" }; // 隐式类型的局部变量 v...
阅读全文
CLR Via CSharp读书笔记(15):枚举类型和位标志
摘要:枚举类型中定义的符号不一定是2的整次方。例如,Actions类型可以定义一个名为All的符号,它对应的值是0x001F.对位标志枚举类型无法使用IsDefined方法,因为其不会将传递的字符串拆分为单独的token进行查找,也不能对传入的数值进行简单的匹配。位标识枚举类型在于其可以组合。可以利用扩展...
阅读全文
CLR Via CSharp读书笔记(14):字符、字符串和文本处理
摘要:数字类型与字符相互转换的三种技术:Casting: 最优效率,因为编译器产生IL指令来执行转换。C#允许开发者指明checked或unchecked代码以执行转换。使用System.Convert类型: 提供一些静态方法执行转换,所有这些方法以checked方式执行。抛出OverflowExcept...
阅读全文
CLR Via CSharp读书笔记(13):接口
摘要:接口实际上是一系列实例方法签名的命名集合。接口还可以定义事件,无参属性和有参数性(如C#中的索引器) ,因为这些都可以最终对应于方法。然而,接口不能定义任何构造方法以及实例字段。同样,尽管CLR允许,C#不允许接口定义静态方法,静态字段,常量以及静态构造函数。接口可以定义在文件级别,也可以被嵌套定义...
阅读全文
CLR Via CSharp读书笔记(12):泛型
摘要:CLR允许创建 generic reference types 以及generic value types, 但是不允许创建 generic enumerated types.代码爆炸当一个使用泛型参数的方法被JIT编译时,CLR取出方法的中间语言(IL),替换指定的类型参数,然后创建操作指定数据类...
阅读全文
CLR Via CSharp读书笔记(11):事件
摘要:事件实现简洁版:public event EventHandler NewMail;protected virtual void OnNewMail(MailEventArgs e) { EventHandler temp = Interlocked.CompareExchange(ref N...
阅读全文
CLR Via CSharp读书笔记(10):属性
摘要:自动实现的属性:与直接声明一个名为Name的public String字段相比,AIP(Auto Implement Property)意味着创建了一个属性。访问该属性的任何代码实际都会调用get和set方法。以后如果决定自己实现get和/或set方法,访问属性的任何代码都不必重新编译。如果将Nam...
阅读全文