C#之类和结构
类和结构都是创建对象的模板
每个对象都包含数据,并提供访问数据和处理数据的方法
类定义类的实例可以包含那些数据和功能
结构与类的区别在于内存的存储方式,访问方式,类是堆上的引用类型 ?结构是存储在栈上的值类型
结构不支持继承,较小的数据使用结构可提高性能。
结构:
struct name
{
public ?string ?id;
public void passtime()
{
implementation of behavior
}
}
类:
class name{
public string id;
public void passtime()
{
//implementation of behavior
}
}
都使用new创建实例
结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,通过使用结构可以创建更多的值类型
类是引用类型:引用类型在堆上分配地址
堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑
因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用
结构不能被继承 可是结构能够继承接口
结构:
没有默认的构造函数,但是可以添加构造函数
没有析构函数
没有 abstract 和 sealed(因为不能继承)
不能有protected 修饰符
可以不使用new 初始化
在结构中初始化实例字段是错误的
类:
有默认的构造函数
有析构函数
可以使用 abstract 和 sealed
有protected 修饰符
必须使用new 初始化
1. 堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些
2. 结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。
3. 在表现抽象和多级别的对象层次时,类是最好的选择
4. 大多数情况下该类型只是一些数据时,结构时最佳的选择
------------------------------------