学在之前
COM Cmponent Object Model
组件对象模型,COM组件是win32动态链接库(dll)或者可执行文件(exe)形式发布可执行代码组成。
是一些小的二进制可执行文件,给应用服务、操作系统其它操作提供服务。
C#语言
完全遵守C#语言规范,只要平台支持,可以跑在任何平台上。并非只有.NET平台,也可以进行其它更多的形式输入,并非只有IL
运行时
确保IL写的程序符合CLI规范的方式执行,CLR。C#编译成IL ,再由CLR编译成本地码
C#1
委托实例有一个操作列表,也就是调用列表,System.Delegate类型的静态方法Combine和Remove负责连接与删除
委托不易变,创建后就不能改变。所以安全传递引用,并与其它委托实例合并,就像string,Delete.Combine与string.Concat类似,都是合并现在的实例形成新实例,不更改原始对象。
Combine == > + / +=
值类型与引用类型
值类型不可以派生出其他类型,值不需要额外的信息描述值实际是什么类型,引用类型每个对象的开头包含一个数据块,标识了对象的实际类型,永远都不能改变对象的类型。
强制转换时,运行时获取一个类型,检查引用对象是不是目标类型的有效对象,有效就返回原始引用 ,引用本身不知道对象类型。同一个引用 "值 "可用于(引用)不同类型的多个变量
对于引用类型来说 ,变量的值就是引用
走出误区之引用类型保存在堆上,值类型保存在栈上
变量的值是在它声明的位置存儲的,类中有int类型属性,这个属性和它的对象是在一起的,也就是堆上
走出误区之 对象在C#中默认通过引用传递
并不是所有的引用类型对象都是引用传递,像string、stringbuilder就不是。无论是值类型还是引用类型都不会传递对象本身,要么是对象的引用,要么是副本。