学习到类,发现和结构体有很多相似的地方,而且最近看到了值类型和引用类型,所以特意总结一下。
创建
类的创建
public class Fruit
{
}
结构体的创建
public struct Vegetable
{
}
区别:
从创建的角度来说,两者非常相同,只不过是关键字不同。
类的关键字:class
结构体的关键字:struct
构造函数
相同点:
方面 | 类 | 结构体 |
---|---|---|
是否包含构造函数 | 是 | 是 |
是否可以实例化 | 是 | 是 |
不同点:
方面 | 类 | 结构体 |
---|---|---|
创建新的构造函数,旧的构造函数是否被覆盖 | 是 | 否 |
构造函数和字段的关系 | 没有强制规定必须包含所有字段 | 强制规定必须包含每个字段 |
类型 | 值类型 | 引用类型 |
因为之前谈到了引用类型和值类型,所以就要聊一下堆和栈。
堆和栈的区别:
堆是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型参数都是可以在栈内存中的。
堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。
值类型和引用类型的区别:
1、将一个值类型变量赋给另一个值类型的变量时,将复制包含的值,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
2、只类型不可能派生出新的类型,但与引用类型相同的是,结构也可以实现结构
3、值类型不可能包含null值。
4、每个值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
如果你觉得你不能承担起家里的重担,那就趁着年轻,好好学习,加油!