三分钟即可了解C#结构体

我们先想象自己遇到一个问题,如果我们要存入1000个人的成绩,爱好,学号等等。每一个人的信息都是不同的数据类型,如果我们可以打包在一个变量上面该多好。结构体就可以完成这样的事情。

我现在简单说一下结构体的概念:在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。

我自己其实对结构体的了解不是很深入,但是我看了一个大佬的文章,我感觉挺有帮助的,在此我也很感谢他的分享,如果你想深入学习,链接如下:

Just Do Itsicon-default.png?t=M85Bhttps://blog.youkuaiyun.com/liu991029/article/details/106718438?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166503081416782412520461%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166503081416782412520461&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-106718438-null-null.142^v51^control,201^v3^control_1&utm_term=C%23%E7%BB%93%E6%9E%84%E4%BD%93&spm=1018.2226.3001.4187

结构体的特征

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.大多数情况下,目标类型只是含有一些数据,或者以数据为主,结构体则是最佳选择
 

这里做一个总结,以上内容是我在学习时遇到的好的博主发表的文章,三分钟其实学不完,嘿嘿嘿嘿,不好意思骗了大家,希望对各位有所帮助吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值