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