前几天,有位同学问我它们用起来有什么区别,当时也不大清楚,糊弄过去了,但是,人不能自欺欺人,不能连自己的无知也要糊弄!
翻了下书,总结一下。
区别:
结构是一种用关键字struct声明的自定义数据类型。与类相似,也可以包含构造函数,常数,字段,方法,属性,索引器,运算符和嵌套类型等,不过,结构是值类型。
1.结构的构造函数和类的构造函数不同。
   a.结构不能包含显式的无参数构造函数。结构成员讲自动初始化为它们的默认值。
   b.结构不能包含以下形式的初始值设定类:base(argument-list);
2.对于结构中的实例字段成员,不能在声明时赋值初始化。
3.声明了结构类型后,可以使用new运算符创建构造对象,也可以不使用new关键字。如果不使用new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。
4.结构不支持继承,即一个结构不能从另一个结构或类继承,而且不能作为一个类的基类。但是,结构从基类OBJECT继承。结构也可以实现接口。
5.什么时候用结构呢?结构使用简单,并且很有用,但是要牢记:结构在堆栈中创建,是值类型,而类是引用类型。每当需要一种经常使用的类型,而且大多数情况下该类型只是一些数据时,使用结构能比使用类获得更佳性能。
最后引用博客园的“越过林子”的话:
   结构是值类型,所以会影响性能,但根据使用结构的方式,这种影响可能是正面的,也可能是负面的。正面的影响是为结构分配内存时,速度非常快,因为它们将内 联或者保存在堆栈中。在结构超出了作用域被删除时,速度也很快。另一方面,只要把结构作为参数来传递或者把一个结构赋给另一个结构(例如A=B,其中A和B是结构),结构的所有内容就被复制,而对于类,则只复制引用。这样,就会有性能损失,根据结构的大小,性能损失也不同。注意,结构主要用于小的数据结构。但当把结构作为参数传递给方法时,就应把它作为ref参数传递,以避免性能损失——此时只传递了结构在内存中的地址,这样传递速度就与在类中的传递速度一样快了。另一方面,如果这样做,就必须注意被调用的方法可以改变结构的值。

本文转自博客园知识天地的博客,原文链接:c#中结构体和类的比较 ,如需转载请自行联系原博主。

c#中结构体和类的比较相关推荐

  1. swift string转int_swift中结构体和类的区别(值类型和引用类型的区别)

    在swift中结构体和类有着更多的相同之处,在一般的使用中能够做到互相替换.我们可以先看看官方文档的描述: Unlike other programming languages, Swift does ...

  2. C/C++中结构体和类的区别

    结构体是为能够保存不同类型的数据而存在的,因为数组朱能够保存一种数据类型,而在平时的编程中我们需要用到不同数据类型的一个整体结构,例如一个学生就有不同的属性,姓名,年龄,学号,性别等等,就需要用不同的 ...

  3. C++中结构体与类的区别介绍

    在参与以C++为编程基础的项目应用中总会遇到结构体类型与类的数据类型,但是其具体应用区别模糊不清 现将其区别总结如下,欢迎补充共同学习(先介绍C和C++中结构体的不同,再对比C++中结构体与类的区别) ...

  4. C#中结构体和类的区别

    结构体和类同样能够定义字段,方法和构造函数,都能实例化对象,这样看来结构体和类的功能好像是一样的了,但是他们在数据的存储上是不一样的 C#结构体和类的区别问题 这两种数据类型的本质区别主要是各自指向的 ...

  5. C语言结构体与C++中结构体和类的区别

    在C++中除了类中可以有构造函数和析构函数外,结构体中也可以包含构造函数和析构函数,这是因为结构体和类基本雷同,唯一区别是,类中成员变量默认为私有,而结构体中则为公有.注意,C++中的结构体是可以有析 ...

  6. C#中结构体和类区别和联系

    结构体 结构体定义 结构体是一种值类型,通常用来封装小型相关变量组.例如坐标或者商品的特征. 结构体是一种自定义的数据类型,相当于一个复合容器,可以存储多种类型. 结构体由结构体成员构成,结构体成员包 ...

  7. 【知识积累】C#中结构体和类的区别

    [类]     类是对现实生活中一类具有共同特征的事物的抽象.类的实质是一种数据类型,类似于int.char等基本类型,不同的是它是一种复杂的数据类型.因为它的本质是类型,而不是数据,所以不存在于内存 ...

  8. C++中结构体和类的区别和联系

    最主要的不同点就是结构体的访问权限为public而且不能改变,而类的访问权限可以改变,public的类和结构体基本一样. 继承上同样表现出这样的特点,struct是public继承的,而class是p ...

  9. c++中 结构体和类的区别

    区别: 结构是一种用关键字struct声明的自定义数据类型.与类相似,也可以包含构造函数,常数,字段,方法,属性,索引器,运算符和嵌套类型等,不过,结构是值类型. 1.结构的构造函数和类的构造函数不同 ...

最新文章

  1. insert 语句的选择列表包含的项多于插入列表中的项_如何定义和使用Python列表(Lists)
  2. linux c 链接详解4-共享库
  3. FineUI经典项目展示(1)生产在线管理系统
  4. 【任务脚本】0523更新京东618叠蛋糕任务脚本全自动脚本,大神更新了京东任务全自动程序...
  5. 解析BF(普通串模式匹配算法)算法
  6. LOL手游锤石上线吓坏玩家?英雄设计被吐槽,玩家:还我端游锤石
  7. maven-antrun-plugin - Target
  8. windows下boost库的基本使用方法
  9. Enterprise Library 3.1 简化使用范例一
  10. 从viewState说开去
  11. 代码,代码,多少梦想葬身于汝!
  12. Discuz!X/数据库操作方法
  13. c语言单例模式,C语言之单例模式
  14. C#调用Qpdf的界面+拖拽pdf文件到窗口+解除pdf权限密码+另存为
  15. 【开源调查问卷系统】limesurvey
  16. PPC2003SE开发日记-资源之工具安装(JONSON原创)
  17. ggplot2绘制地图
  18. windows10桌面_三大虚拟桌面软件对比,总有一款适合你!
  19. javaweb qq空间(博客)项目超详细开发套路原理分析
  20. 消费新品周报 | AWE海尔推出无尘洗衣机;卡西欧F1红牛车队合作新款运动手表...

热门文章

  1. openresty开发系列20--lua的时间操作
  2. unity 中让Text的文字动态刷新形式
  3. Codeforces 468C/469E 易错点
  4. 前端学习笔记2017.6.21-引入JS文件的方法
  5. RHEL环境下调试Shell脚本时遇到字符串转换整数的问题
  6. FileOutStream
  7. 如何在家写出一份无懈可击的产品文档
  8. 如果CEO只给你1个月时间,如何完成从0到1
  9. 为什么越来越多的手机浏览器转型新闻客户端?
  10. 唐岩自述奋斗史:从娄底青年到陌陌上市