我们先想象自己遇到一个问题,如果我们要存入1000个人的成绩,爱好,学号等等。每一个人的信息都是不同的数据类型,如果我们可以打包在一个变量上面该多好。结构体就可以完成这样的事情。
我现在简单说一下结构体的概念:在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。
我自己其实对结构体的了解不是很深入,但是我看了一个大佬的文章,我感觉挺有帮助的,在此我也很感谢他的分享,如果你想深入学习,链接如下:
结构体的特征
1.结构体可以有方法、域、属性、索引器、操作方法、事件。
2.结构体可以定义构造函数(实例和静态构造函数),但是不能构造析构函数。(虽然说可以定义构造函数,但是不能定义无参构造函数,因为结构体的无参构造函数是自动定义的且不能被改变,默认的无参构造函数会一直存在,默认的无参构造函数不会因为定义了有参构造函数就消失,这里说的都是实例构造函数)
3.结构体不能继承其他结构体或者其他类。
4.结构体不能用于作为其他结构体或者类的基类。
5.结构体类型总是隐式密封的,不能指定为密封的和抽象的,因此在定义结构时不能使用sealed和abstract关键字。
6.结构体成员不能被指定为抽象的、虚拟的、或者保护的对象,因此结构体的成员不能使用如下访问修饰符:abstract、virtual和protected
7.结构体的函数成员不能声明为abstract和virtual,但是可以使用override关键字,用以覆写它的基类System.ValueType中的方法。
8.结构体可以实现一个或多个接口。
9.使用New运算符创建结构体对象时,将创建该结构体对象,并且调用适当的构造函数。
10.如果不使用New运算符创建结构体对象,那么在初始化所有字段前,字段将保持未赋值状态,且对象不可用。
结构体的作用
1.结构是值类型,在分配内存的时候,速度非常快,因为它们将内联或者保存到栈中,在结构超出作用域被删除时速度也很快
2.结构体可以把功能相同的数据组织起来,存在一起,用是时候方便,而且在调用函数时,若传递参数较多,传一个结构体相对而言简单一些,很多系统自带的函数必须用结构体。
3.结构体在使用时可以和枚举一起使用。
结构体与类的区别
结构体和类的使用场景
1.当堆栈的空间很有限,且有大量的逻辑对象时,创建类要比创建结构好一些。
2.对于点、矩形和颜色这样的轻量对象,假如要声明一个含有许多个颜色对象的数组,则CLR需要为每个对象分配内存,在这种情况下,使用结构的成本较低。
3.在表现抽象和多级别的对象层次时,类是最好的选择,因为结构不支持继承。
4.大多数情况下,目标类型只是含有一些数据,或者以数据为主,结构体则是最佳选择
这里做一个总结,以上内容是我在学习时遇到的好的博主发表的文章,三分钟其实学不完,嘿嘿嘿嘿,不好意思骗了大家,希望对各位有所帮助吧。