为了账号安全,请及时绑定邮箱和手机立即绑定

在.NET中,struct和class有什么区别?

在.NET中,struct和class有什么区别?

慕桂英546537 2019-06-20 10:41:39
在.NET中,struct和class有什么区别?在.NET中,struct和class有什么区别?
查看完整描述

3 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

在.NET中,有两类型,参考类型价值类型.

结构价值类型课程是参考类型.

一般的区别是参考类型生活在堆上,价值类型内联生活,也就是说,无论它在哪里,您的变量或字段都是定义的。

包含价值类型包含整个价值类型价值。对于struct,这意味着变量包含整个struct及其所有字段。

包含参考类型包含指针,或参照系到内存中实际值所在的其他地方。

首先,这有一个好处:

  • 价值类型

    总是包含一个值
  • 参考类型

    可以包含

    -参考,意思是他们现在什么都不提

在内部,参考类型S是作为指针实现的,并且知道了这一点,并且知道变量赋值是如何工作的,还有其他的行为模式:

  • 复制

    价值类型

    变量到另一个变量中,将整个内容复制到新变量中,从而使这两个变量区别开来。换句话说,在复制后,对其中一个的更改不会影响另一个
  • 复制

    参考类型

    变量到另一个变量中,复制引用,这意味着您现在有两个对同一个变量的引用。

    其他地方

    实际数据的存储。换句话说,在复制之后,更改一个引用中的数据似乎也会影响另一个引用,但这只是因为您实际上只是查看两个地方的相同数据

在声明变量或字段时,这两种类型的区别如下:

  • 变量:

    价值类型

    住在垃圾堆上,

    参考类型

    作为指向堆内存中实际内存所在的某个位置的指针(尽管请注意)

    Eric Lipperts系列文章:Stack是实现细节.)

  • 类/结构字段:

    价值类型

    完全生活在这种类型中,

    参考类型

    作为指向堆内存中实际内存所在的某个位置的指针,驻留在该类型中。


查看完整回答
反对 回复 2019-06-20
?
手掌心

TA贡献1942条经验 获得超3个赞

每一项的简短摘要:

只上课:

  • 可以支持继承
  • 是引用(指针)类型
  • 引用可以为空。
  • 每个新实例的内存开销

仅结构:

  • 不能支持继承
  • 是值类型
  • 通过值传递(如整数)。
  • 不能具有空引用(除非使用了Nullable)
  • 不要为每个新实例设置内存开销-除非“装箱”。

类和结构:

  • 复合数据类型通常用于包含一些具有某种逻辑关系的变量。
  • 可以包含方法和事件。
  • 可以支持接口


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 565 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信