[Clr via C#读书笔记]Cp13接口】的更多相关文章

Cp13接口 类和接口继承 接口只提供签名,不提供实现:等效于契约:凡事能使用具名接口的地方都能够使用实现了的接口. 定义接口 定义很简单,FCL也提供了大量的现成接口供使用: 继承接口 类不能多继承,接口可以: 调用接口 变量可以是接口,但是只能调用这个接口约定的操作: 隐式接口和显式接口的实现 隐式接口的操作可以通过类变量进行,而显示接口的实现,只能通过接口类型的变量进行: 泛型接口 协变和逆变:泛型和接口的约束: 具有相同方法和签名的多个接口的实现 必须使用显式接口的实现. 显示接口的优点…
1.接口对一组方法签名进行了统一命名.接口还能定义事件.无参属性和有参属性(C#的索引器). 2.c#禁止接口定义任何一种静态成员. 3.C#编译器要求将实现接口的方法标记为public.CLR要求将接口的方法标记为virtual.不将方法显示标记为virtual,编译器会将它们标记为virtual和sealed:这会阻止派生类重写接口方法.将方法显式标记为virtual,编译器就会将方法标记为virtual,使派生类能重写它.派生类不能重写sealed的接口方法.但派生类可重新继承同一个接口,…
widows如何执行I/O操作      构造调用一个FileStream对象打开一个磁盘文件-----FileStream.Read方法从文件中读取数据(此时线程从托管代码转为本地/用户模式代码)----Read在内部调用win32ReadFile函数-----ReadFile分配一个小的数据结构(I/O请求包,简称IRP)----IRP请求结构初始化(包括:一个文件句柄,文件一个偏移量,一个byte[]数组地址,要传输的字节数,以及其他常规性内容)------初始化后ReadFile将线程从…
线程池基础 1,线程的创建和销毁是一个昂贵的操作,线程调度以及上下文切换耗费时间和内存资源. 2,线程池是一个线程集合,供应你的用程序使用. 3,每个CLR有一个自己的线程池,线程池由CLR控制的所有的AppDomain共享. 4,CLR初始化的时候,线程池没有线程的. 5,线程池维护一个操作请求队列.当应用程序想要执行一个一步操作的时候,就调用某个方法.将记录项(empty)追加到线程池队列中,然后线程池代码从队列中提取这个记录项,然后将记录项派遣(dispatch)给一个线程池的线程.当线程…
#1 CLR寄宿: 开发CLR时,Microsoft实际是将他实现成包含在一个dll中的COM服务器.Microsoft为CLR定义了一个标准的COM接口,并为该接口和COM服务器分配了GUID.安装.NET Framework时,代表CLR的COM服务器在Windows注册表中注册. 任何Windows应用程序都可以寄宿CLR,非托管宿主应该调用MetaHost.h文件中声明的CLRCreateInstance函数,该函数是在MSCoreEE.dll文件中实现的,该dll被称为"垫片"…
#1 加载程序集 Assembly.Load: public class Assembly { public static Assembly Load(AssemblyName assemblyRef); public static Assembly Load(String assemblyString); } 在内部,Load导致CLR向应用程序集应用一个版本绑定重定向策略,并在GAC中查找程序集.如果传递的是一个弱命名程序集,不会应用版本绑定重定向策略,也不会去GAC中查找程序集. AppD…
前言 这俩个月没怎么写文章做记录分享,一直在忙项目上线的事情,但是学习这件事情,停下来就感觉难受,clr线程这章也是反复看了好多遍,书读百遍其义自见,今天我们来聊下线程基础 1.进程是什么,以及线程起源 2.线程开销,以及上线文切换 3.使用线程的理由 4.线程调度和优先级 5.前台线程和后台线程 一.进程是什么,以及线程起源 在计算机的早期岁月,os没有线程的概念,整个系统只运行者一个执行线程,其中包含操作系统和应用程序的代码.这意味着长时间运行的任务会阻止其他任务的运行.在16位window…
前言 近段时间工作需要用到了这块知识,遂加急补了一下基础,CLR中这一章节反复看了好多遍,得知一二,便记录下来,给自己做一个学习记录,也希望不对地方能够得到补充指点. 1,.托管代码和非托管代码的区别 2.托管堆是什么? 3.托管堆基础,托管堆分配资源 4.内存泄漏 内存溢出.内存损坏 5.C# new操作符分配资源 6.垃圾回收算法 7.代:提升性能 8.垃圾回收触发条件 9.大对象 10.使用需要特殊清理的类型 11.使用包装了本机资源的类型 一.托管代码和非托管代码的区别 托管代码:执行过…
1.定义泛型类型或方法时,为类型指定的任何变量(比如T)都称为类型参数.使用泛型类型或方法时指定的具体数据类型称为类型实参. 2.System.Collections.Concurrent命名空间提供了线程安全的泛型集合类.Microsoft建议使用泛型集合类,不建议使用非泛型集合类. 3.具有泛型类型参数的类型称为开放类型,CLR禁止构造开放类型的任何实例.这类似于CLR禁止构造接口类型的实例.代码引用泛型类型时可指定一组泛型类型实参.为所有类型参数都传递了实际的数据类型,类型就成为封闭类型.…
注:书本第9单参数 CLR默认所有方法参数都传值.引用本身是值引的,意味左方法能修改对象,而调用都能看到这些修改.值类型,传的是实例的一个副本,所以调用者不受影响. (和以前理解的不一样.默认都是传值的,引用类型本以为就是传指针的,但不是的:值类型是因为传了一个副本才没有改变原值) CLR允许以传引用而非传值的方式传递参数.out和ref.他们都会生成相同的IL代码.但out不需要在调用者处初始化,而ref需要. 两个重载方法如果只有out和ref的区别,则不合法.因为在IL中,他们生成的代码是…