读书笔记
丨背水丨
分享一些开发环境的搭建技巧。顺手共享自己期末做的大作业项目、
展开
-
【CLR via C#】第11章-事件
1.设计要公开事件的类型,该类型用来容纳所有需要发送给事件通知接收者的附加信息。根据约定,该类型应该从System.EventArgs派生。例如:public class NewMailEventArgs : EventArgs{ private readonly string m_from, m_to, m_subject; public NewMailEventArgs(string from, string to, string subject){ m_from = from; m_to原创 2021-01-04 16:02:38 · 141 阅读 · 0 评论 -
【CLR via C#】第10章-属性
1.CLR支持的属性有两种:无参属性,这也是我们平常说的属性;有参属性,它在不同的编程语言中有不同的称呼。例如:在C#中有参属性被称为索引器,而在VB中被称为默认属性。2.属性不能作为out或者ref参数传给方法,而字段可以。public class SomeType{ private static string _name; private static string Name { get { return null; } set{}原创 2020-09-30 17:58:26 · 187 阅读 · 0 评论 -
【CLR via C#】第9章-参数
1.默认参数和可选参数,同扩展方法一样,一旦定义编译器就会在内部向该参数应用定制特性[DefaultParameterValue(value: object?)]和[Optional],这些特性会在最终生成文件的元数据中持久性地存储下来。namespace System.Runtime.InteropServices{ [AttributeUsage(AttributeTargets.Parameter)] public sealed class DefaultParameterValueAtt原创 2020-09-27 19:07:37 · 172 阅读 · 0 评论 -
【CLR via C#】第8章-方法
1.创建引用类型的实例时,首先为实例的数据字段分配内存,然后初始化对象的附加字段(类型对象指针和同步块索引),最后调用类型的实例构造器`来设置对象的初始状态。2.和其他方法不同,实例构造器永远不能被继承。也就是说,类只有自己定义的实例构造器。因为不能被继承,所以实例构造器不能使用以下修饰符:virtual,new,override,sealed和abstract。3.如果类的修饰符为abstract,那么编译器生成的默认构造器的可访问性就为protected。 如果类的修饰符为static(seale原创 2020-09-17 14:10:06 · 155 阅读 · 0 评论 -
【CLR via C#】第7章-常量和字段
1.常量是从不变化的符号,在编译时就已经确认(固定),并保存在程序集元数据中。由于常量值是从不变化的,所以常量总是被视为类型定义的一部分,也就是说常量总是被视为静态成员,而不是实例成员。2.CLR支持类型(静态)字段和实例(非静态)字段类型字段:容纳字段数据所需的动态内存是在类型对象中分配的,而类型对象是在类型加载到一个AppDomain时创建,那么什么时候将类型加载到一个AppDomain中呢?这通常是在引用了该类型的任何方法首次进行JIT编译时。实例字段:容纳字段数据所需的动态内存是在构造类型的原创 2020-08-03 13:14:09 · 132 阅读 · 0 评论 -
【CLR via C#】第6章-类型和成员基础
1.子类重写基类的方法时,只能放宽限制,而不能收紧限制类可以重写基类定义的protected方法,将重写方法设为public(放宽),但是不能将重写方法设为private(收紧)。之所以不能在派生类中收紧对基类方法的访问,是因为CLR承诺派生类总能转型为基类,并获取对基类方法的访问权。2.static只能应用于类,不能应用于结构(值类型)。static有以下限制静态类必须直接从基类System.Object派生,从其他任何类派生都没有意义。因为继承只适用于对象,而你不能创建静态类的实例。静态类不原创 2020-07-08 19:26:26 · 160 阅读 · 1 评论 -
【CLR via C#】第5章-基元类型、引用类型和值类型
1.编译器直接支持的数据类型成为基元类型(primitive type)。2.C#语言规范建议使用关键字,但是作者坚持使用FCL类型名称。3.Checked和Unchecked基元类型操作:在对数据类型进行转换时,溢出检查是默认关闭的。在CLR中提供了一个特殊IL指令,如add指令,不执行溢出检查,而add.ovf(System.OverflowException)将检查溢出,与之对应的还有sub/sbu.ovf,mul/mul.ovf,conv/conv.ovf。在C#中我们使用Checked和原创 2020-06-29 13:46:53 · 158 阅读 · 0 评论 -
【CLR via C#】第4章-类型基础
1.CLR最重要的特性之一就是“类型安全”:在运行时,CLR总是知道对象的类型是什么,调用GetType()方法即可知道对象的确切类型。这也就是为什么GetType()方法是基类Object中的非虚方法,因为如果可以重写GetType()方法,那么他返回的就不一定是当前的对象类型,违背了类型安全。2.使用 is 和 as 操作符来转型:is和as在任何情况下都不会抛出异常。public class People{}public class Student : People{}在做类型判断时,我原创 2020-06-24 13:30:44 · 212 阅读 · 0 评论