首页 > 编程语言 >c#中结构与类的区别

c#中结构与类的区别

时间:2022-11-16 15:03:33浏览次数:33  
标签:www 软件开发 区别 c# mscto com public 结构


类与结构的实例比较

  类与结构的差别

  如何选择结构还是类

  一.类与结构的示例比较:

  结构示例: 

   public struct Person
  {

  string Name;



  int  weight

软件开发网 www.mscto.com



  //implement something


  }


  }
 

软件开发网 www.mscto.com

  类示例:

   public class TestTime
  {



软件开发网 www.mscto.com


  public void passtime()

  {
 



   //implementation of behavior
  }

  }
 

  调用过程:

   public class Test
  {

  public static ovid Main

软件开发网 www.mscto.com



  }


  }
 

  从上面的例子中我们可以看到,类的声明和结构的声明非常类似,只是限定符后面是 struct 还是 class 的区别,而且使用时,定义新的结构和定义新的类的方法也非常类似。那么类和结构的具体区别是什么呢?





软件开发网 www.mscto.com

  因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用


  注:

  1.虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object



  结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed .

  类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承



 



   interface IImage
  {
  void Paint();
  }
  struct Picture : IImage
  {
  public void Paint()
  {
  // painting code goes here
  }
  private int x, y, z;  // other struct members
  }
 


  3.内部结构:



  没有析构函数


  不能有protected 修饰符


  可以不使用new 初始化


  在结构中初始化实例字段是错误的



  有析构函数


  有protected 修饰符



  三.如何选择结构还是类


  1.堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些




  4.大多数情况下该类型只是一些数据时,结构是最佳的选择

标签:www,软件开发,区别,c#,mscto,com,public,结构
From: https://blog.51cto.com/u_15739274/5856421

相关文章

  • Pycharm是什么?主要功能有哪些?
    python编程需要用什么软件?学python编写代码的时候,可以使用的软件有很多,大致分为这几类:编辑器、解释器、终端、包管理、脚本引擎等。但在这其中,我们必不可少的软件就是P......
  • python multiprocessing 多进程
    1获取进程id当我们运行py文件时,该程序的运行就是一个进程,如果在该进程中又创建了其他进程,那么该进程就是主进程,创建的其他进程就是子进程。下面我们通过通过os库中的方法......
  • centos52 的smb.conf 共享文件配置 samba 的配置文件,较老版本
     新建用户x,组为root,用pdbedit-a xxxx命令添加到samba服务中在配置完毕后,可以用testparm/etc/samba/smb.conf来检查是否正确  #ThisisthemainSambaconf......
  • 深入理解css 笔记(8)
      接下来我们讲下响应式设计,最初开发人员通过创建两个网站来解决这个问题。桌面版和移动版,只是假如要兼容越来越多的设备,比如大屏的平板手机,ipadmini.这时候,强制分开的......
  • 【问题解决】ESP32开发板上的CP210xUSB转串口坏了怎么办
        今天居然遇到了主板上的USB转串口芯片坏了的情况!这运气真是。。    还好问题解决了,心理舒服点,这里记录一下,以后大家要是遇到也可以参考。    先吐槽CP210x......
  • XML指南——XML CDATA
    在XML文档中的所有文本都会被解析器解析。只有在CDATA部件之内的文本会被解析器忽略。解析数据XML解析器通常情况下会处理XML文档中的所有文本。当XML元素被解析的时候,XML......
  • docker
    初步认识Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可以可移植的镜像中,然后发布到任何流行的linux或者Windows操作系统的机器上,也可以......
  • TRINAMIC的六轴步进电机控制模块TMCM-6110使用简介及使用场景
      TMCM-6110是一个用于无传感器负载相关电流控制的六轴步进电机控制器/驱动器模块。该设备有Trinamic  StallGuard2™(无传感器失速检测和机械负载测量)、CoolStep......
  • [Typescript] 105. Medium - Placeholder
    typePlaceholder<Textendsstring>=Textends`${string}{${inferP}}${inferREST}`?P|Placeholder<REST>:never;declarefunctionformat<Sextendsstr......
  • Oracle 的 Redo log 日志
    Oracle的数据库日志称为redolog,所有数据改变都记录redolog,可以用于修复受损的数据库,Redo日志是分组的,默认是3组,Redo日志是轮流使用的,一个redolog满了,LGWR会切换到下......