Class 能够被实例化,属于引用类型,是分配在内存的堆上的。类是引用传递的。程序员
Struct 属于值类型,是分配在内存的栈上的。结构体是复制传递的。设计模式
Boolean等属于结构体。ide
栈是编译期间就分配好的内存空间,所以你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存 中。函数
堆是程序运行期间动态分配的内存空间,你能够根据程序的运行状况肯定要分配的堆内存大小。spa
GC是垃圾收集器(Garbage Collection) 程序员不用担忧内存管理,由于垃圾收集器会自动进行管理。GC只能处理托管内存资源的 释放,对于非托管资源 则不能使用GC进行回收,必须由程序员手动回收,一个例子就是FileStream 或者SqlConnection 须要程序 员调用Dispose进行资源的回收。.net
不一样点: 不能直接实例化接口。 接口不包含方法的实现。 接口能够多继承,类只能单继承。 类定义可在不一样的源文件之间进行拆分。设计
相同点: 接口、类和结构体均可以从多个接口继承。接口相似于抽象基类:继承接口的任何非抽象类型都必须实现接口全部成员。对象
接口和类均可以包含事件、索引器、方法和属性。继承
相同点:都不能被直接实例化,均可以经过继承实现其抽象的方法。索引
不一样点: 接口支持多继承;抽象类不能实现多继承。接口只能定义行为;抽象类既能够定义行为,还能够提供实现。
接口只包含方法(Method) 、属性(Property)、索引器(Index) 、事件(Event)的签名定义字段和包含实现方法。
接口能够做用于值类型(Struct)和引用类型(Class);抽象类只能做用于引用类型。例如,Struct就能够继承接口,而不能继承类。
加分的补充回答:讲设计模式的时候SettingsProvider的例子。