object和construction

结构体是值类型,类是引用类型


结构体成员不能从继承自其他类或结构体,也不能被其他类或结构体继承(但可以实现接口),然而类可以(注意,所有的值类型都默认从ValueType类继承,ValueType类再从Object类继承。所以结构体对象仍然拥有超类Object的成员)。
结构体成员不能在声明时赋值初始值,类可以(实际上,C#类成员初始化代码会被编译器放到构造函数中的最前边部分执行,而C++中根本没有这种方式,只能声明成员)
不能为结构体提供无参构造函数(类中如果提供了自定义构造函数,就不会再提供默认无参构造函数。)
结构体可以像类一样通过new 构造函数()来创建实例,也可以声明实例之后再赋值(例如:Person xiaoming;    xiaoming.name = “xiaoming”;)
结构体在自定义构造函数中必须为所有成员赋值。
结构不允许声明析构函数(Destructor),类则无此限制
结构体之间的比较,可以使用Equals而不能使用==操作符。且当结构体有成员是引用类型时,成员的比较是用 Object.ReferenceEquals 实现,即该引用类型的成员是否指向相同的引用(可能会让人误解,因为使用者可能只是想比较数值相同)

结构体,类的使用

因为结构体是值类型,自身存储在栈上,主要用于轻量级对象,用来存储简单的数据(此时结构体的成员也大部分是值类型)。
因为类是引用类型,可以抽象、继承等,适合存储重量级对象,拥有复杂逻辑(结构体不能被继承,也不能继承自其他,不能用abstract关键字等)

来源:CSDN

猜你喜欢

转载自www.cnblogs.com/azurite/p/9943854.html