zony.me

C# 类与结构的区别

这个问题可能很多初学者都知道,用C#写了这么久的程序,类和结构用了很久却并不知道他们之间的本质区别。 在很多时候,他们只是声明的时候关键字的不同,一个是class,一个是struct而已。 本质上的区别在于:

类

类对象之间的赋值是通过复制引用实现的。

  • 有默认的构造函数。
  • 有析构函数。
  • 可以使用abstract和sealed。
  • 有protected修饰符。
  • 必须使用new初始化。

结构

  • 所有基类型都是结构类型,如int 对应的是System.int32结构。
  • 堆栈的执行效率更高,但资源有限,不适合处理逻辑复杂的对象。
  • 结构体对象之间赋值是创建新的结构。
  • 没有默认的构造函数,但是能够添加构造函数。
  • 没有abstract和sealed。
  • 不能有protected修饰符。
  • 可以不使用new初始化。
  • 在结构初始化实例字段是错误的。

谈了这么多,那么什么时候使用类,什么时候使用结构体呢?

  1. 堆栈空间有限,对于有大量逻辑的对象,使用类比结构体好一些。
  2. 在表示抽象和多级别层次的对象时,使用类是更好的选择。
  3. 在大多数情况下对象的类型只是数据时,使用结构是最好的选择。
C# 类与结构的区别
作者 Zony · 发布于 2016-07-19
Licensed under CC BY-NC-SA 4.0
← 上一篇WinForm 在线程中启动新的窗口下一篇 →C# HashTable与HashMap的区别
目录