c#中struct和class的区别

今天面试问到了这个问题,居然在默认访问权限这个细节上答错了,真想给自己一块板砖好好拍一把,nnd,看来对于基础知识的掌握还是不够牢固,希望别因为这个问题导致被pass掉了。。。

总结区别如下:

1.struct 是值类型,class是对象类型

2.struct 不能被继承,class可以被继承

3.struct 默认的访问权限是public,而class默认的访问权限是private.

4.struct不能由程序员申明构造函数,即使是默认(不带参数)的构造函数,同样也不能有析构的处理部分。这是因为Struct的构造函数是由编译器自动生成的。并且Struct的用途是那些描述轻量级的对象,例如Line,Point等,并且效率比较高。

5.struct的new和class的new是不同的。struct的new就是执行一下构造函数创建一个新实例再对所有的字段进行Copy。而class则是在堆上分配一块内存然后再执行构造函数,struct的内存并不是在new的时候分配的,而是在定义的时候分配

原文地址:https://www.cnblogs.com/jiaruistone/p/1617342.html