• C# 结构与类的区别


    一、定义方式

      定义结构:

      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。

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

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

    二、存储及赋值

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

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

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

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

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

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

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

  • 相关阅读:
    ajax()方法与后台交互
    实现CSS中的垂直水平居中(附带Flex布局,CSS3+SASS完美版)
    yield语句
    匿名方法和Lambda表达式
    委托、Lambda表达式和事件
    分治法
    分治法求一个N个元素数组的逆序数
    快速找出故障机器
    C++关联容器综合应用:TextQuery小程序
    转:做一个有趣的有意思的人
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/10336937.html
Copyright © 2020-2023  润新知