一、定义方式

  定义结构:

  struct PointStruct  //默认的访问权限是 public
  {
    public int X { get; set; }
    public int Y { get; set; }    public PointClass(int x, int y){X = x;Y = y;}}

  定义类:

    class PointClass  //默认的访问权限是 private
    {public int X { get; set; }public int Y { get; set; }public PointClass(int x, int y){}}

  首先,声明所使用的关键字: 使用 struct 声明结构,使用 class 声明类。

  其次,默认的访问权限:   结构的默认访问权限是 public,而类的默认访问权限是 private。

  然后,声明的变量的初始值: 在类里面声明变量可以给初始值,但在结构体中声明的变量是不可以赋初始值的。

  最后,构造函数:      结构体不能显式定义无参数的构造函数,并且结构体中的构造函数中必须给该结构体的所有字段赋值;但是类的构造函数中可以不给字段赋值。

二、存储及赋值

  结构是值类型(存储的是数据的值),当其作为局部变量的时候是存储在堆栈空间内的,其对象的字段值是直接存储在这个变量中的。(堆栈的空间有限,但存取速度快,处理效率要比堆的效率高)

  类是引用类型(存储的是对实际数据的引用),存储在托管堆中。(托管堆的空间较大,但速度要比堆栈慢)

  值类型与引用类型是结构和类的最大

三、选择“结构”还是选择“类”?

  结构是值类型,所以结构体就是当成值来使用的;而类是引用类型,所以类是通过引用来对实际数据进行造作的。

  因为堆栈的存储速度快(但空间有限),所以,我们在写一个轻量级的对象(只需要少量的字段)的时候,一般选用结构来写。

  而当我们在描述一个重量级的对象的时候,一般选用的都是类的实现方式。

转载于:https://www.cnblogs.com/zhangchaoran/p/10336937.html

C# 结构与类的区别相关推荐

  1. c#中结构与类的区别

    类与结构的差别 如何选择结构还是类 一.类与结构的示例比较: 结构示例: public struct Person  { string Name; int height; int weight pub ...

  2. c#中结构与类的区别(转)

    目录 类与结构的实例比较<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" / ...

  3. [转载]:C# 中结构与类的区别

    转载自:http://www.cftea.com/c/2008/03/JHB3MJM8DYGS0JJ9.asp 完美集成.增强 KindEditor HTML 编辑器 目录 类与结构的实例比较 类与结 ...

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

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

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

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

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

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

  7. C#中的结构和类之间的区别

    C#类和结构 (C# class and structure) In C# and other programming languages, structure and classes are use ...

  8. 十三、CSS 3新特性详解(一)——属性、结构伪类、伪元素选择器,nth-child与nth-of-type区别,2D rotate,calc函数、滤镜filter、过渡transition

    七.CSS3 属性选择器(上) 什么是 CSS3 在 CSS2 的基础上拓展.新增的样式 CSS3 发展现状 移动端支持优于 PC 端 CSS3 目前还草案,在不断改进中 CSS3 相对 H5,应用非 ...

  9. 【唐老狮】C#——结构体和类的区别

    [结构体和类的区别] 结构体是值类型,类是引用类型 结构体存在栈中,类存在堆中 结构体成员不能使用protected访问修饰符,而类可以 结构体成员变量申明不能指定初始值,而类可以 结构体不能申明无参 ...

最新文章

  1. python生成饼图文件_python使用HTMLTestRunner导出饼图分析报告的方法
  2. (转)我的座驾见谁灭谁!
  3. 新消费风口再“热闹”,红利依然握在伊利、康师傅们手里
  4. DengAI —数据预处理
  5. mysql 参数bug_MySQL 的这个 BUG,坑了多少人?
  6. lamda 对比两个list_正式支持多线程!Redis 6.0与老版性能对比评测
  7. html表白特效源代码_程序员如何在七夕节表白
  8. 计算机毕业设计源码分享双鱼林,计算机毕业课程设计论文源码-057双鱼林asp教务选课信息系统...
  9. linux下无权限安装anaconda和tensorflow-gpu
  10. 域迁移过程下详细步骤
  11. mybatis-generator
  12. char,varchar,nvarchar以及datetime和smalldatetime的区别
  13. python添加音乐_python给视频添加背景音乐并改变音量的具体方法
  14. 项目:识别Twitter用户性别
  15. 数据库建模工具ER Studio 8 安装破解总结
  16. 『码上行动-编程擂台』学员作品展(附源码)
  17. 13. 如何打破白天开会、晚上加班的节奏
  18. WebSocket实现聊天功能
  19. 第4章 虚拟机性能监控、故障处理工具(上)
  20. 深入浅出Pytorch函数——torch.arange

热门文章

  1. Ubuntu默认密码,及其修改
  2. 基于用户投票的排名算法(四):牛顿冷却定律
  3. 用 ffmpeg + m3u8-segment 将h264的ES流转换成m3u8的过程记录
  4. 2015数据中心宕机20%是由DDoS攻击引起
  5. node.js初步认识
  6. 使用curl操作InfluxDB
  7. php 打印测试技巧
  8. 凸现三围的健身运动法
  9. 孙兴慜已飞抵阿联酋 能否出战国足将视情况而定
  10. K8S-网络模型、POD/RC/SVC YAML 语法官方文档