class 和 struct 有什么区别
class 用以定义一个类,而struct 用以声明结构体 ;
首先复习一下修饰符知识
public : 公共访问 , 对访问没有限制 ;
private : 私有访问 , 仅在声明它们的类和结构体中才可访问 ;
internal : 同一程序集下可访问 , 如 : 某解决方案下存在多个项目 项目A中 类a为internal修饰类 , 则类a仅供于项目A内调用 ;
protected : 本身不可被访问 但可通过其子类进行访问 ;
abstract : 用于声明虚类 , 限定某个类只能是其他类的基类 ;
partial : 局部类的声明 , 即此文件中的这个类仅是这个类的一部分 (比如这个类还有另一个部分在另一个文件上等情形) 原则是此类的所有局部类需在相同的命名空间内 ;
sealed : 此类不能被继承 ;
static : 静态类 , 不能被实例化 ;
那么这个问题就变成了
结构体和类的区别
类的对象存储在堆空间中 , 结构体存储在栈中 . 堆的空间大但访问速度慢 , 栈则相反 ;
在某些轻量级应用上用结构体替代类可以提升效率 , 但也无法滥用 因为结构体的限制就摆在那里...
比如当对象表现抽象和多层次时 , 结构体就无法搞定了
类用不到栈么 ?
并不是 , 类也需要将引用保存在栈中 .
总结一下
类是引用类型 , 结构是值类型 (int/ double/ bool and so on...);
结构不支持继承 (因为他本身已经有一个继承了 System.ValueType);
结构不能声明默认的构造函数 (因为他本身默认已经有一个了);
结构体中声明的字段无法赋予初值 ;