为什么对象是引用类型而不是值类型

发布于 科技 2024-08-01
10个回答
  1. 匿名用户2024-01-31

    内存分为两个区域,一个是堆栈:专门用于存储值类型,但它有一定的存储空间,只能存储基本数据类型的数据和对象类型的引用地址,也称为哈希码。 堆栈中存储的基本数据类型的值有最大值和最小值,不能超过其默认范围。 第二个是堆:

    它具有较大的存储空间,用于存储“数组类型”、“字符串类型”和“对象类”的数据。 堆中存储的引用类型数据没有固定大小,例如字符串类型的数据,可以存储一个字符,两个字符在里面...更何况,不管你存储多少,都会在内存堆中打开一个空间来存储你的数据,在堆栈中打开一个空间来存储引用地址,当你调用它时,编译器会根据堆栈中存储的引用地址指向堆中存储的数据。这就是我能说的,我是新手......嘿。

  2. 匿名用户2024-01-30

    由于值类型是复制的,因此对象往往会占用大量内存空间。 所以使用引用类型,否则效率太低。 从理论上讲,在设计一门语言时,值类型和引用类型之间没有严格的含义,这种划分主要是为了效率。

    正是出于这种考虑,虽然 struct 是一种值类型,但我们不建议以值类型的形式传递参数。 如果你的问题得到解答,不明白可以问,谢谢。

  3. 匿名用户2024-01-29

    如果你已经学会了C++,那么事情就很简单了。

    引用类型等效于指针变量,值类型等效于普通变量。

  4. 匿名用户2024-01-28

    1.速度的差异。

    快速访问值类型,慢速访问引用类型。

    2.用途上的差异。

    值类型表示实际数据,引用类型表示对内存堆中存储的数据的指针或引用。

    3.**上的区别。

    值类型继承自,引用类型继承自。

    4.位置差异。

    值类型的数据存储在内存堆栈中,引用类型的数据存储在内存堆中,内存单元仅保存堆中对象的地址。

    5.类型差异。

    值类型的变量直接存储实际数据,而引用类型的变量存储数据的地址,即对象的引用。

    6.存储位置的差异。

    值型变量将变量的值直接存储在堆栈中,引用型变量将实际数据的地址存储在堆栈中,而实际数据则存储在堆中。

  5. 匿名用户2024-01-27

    1.不同的存储对象:值类型变量存储变量的值,并直接存储在堆栈内存中。

    引用类型变量存储变量所在的内存地址,引用类型变量的实际数据存储在托管堆中,变量本身只是堆中实际数据的地址,存储在堆栈内存中,通常为四个字节。

    2.不同的存储位置:引用类型存储在托管堆中。

    堆栈的内存自动释放,堆内存由网络中的 gc 自动释放。

    3.不同类型:这里的类型区分对象是 c 中的内置类型类型和用户定义类型。

    C 中的值类型:C 有 15 个预定义类型,其中 13 个是值类型,2 个是引用类型(字符串和对象)。

    以上内容是指:百科全书 - 引文类型。

    百科全书 - 值类型。

  6. 匿名用户2024-01-26

    1. 值类型包含特定值。

    例如。 int a = 1;

    int b = a;

    b++;在本例中,b 为 2,a 仍为 1,2,并且引用类型包含值的地址。

    例如,有一种类型的用户

    user u1 = new user();

    user u2 = u1;

    李思";在这种情况下,u2 和 u1 都命名为 Li Si,因为当 u2=u1 时,u1 和 u2 会指向内存中的同一个地址。 更改 U2 等同于更改 U1,值类型:byte、short、int、long、float、double、decimal、char、bool 和 struct 统称为值类型。

    声明值类型变量后,编译器会为其分配内存,而不管它是否被赋值。

    引用类型:字符串和类统称为引用类型。 声明类时,堆栈中仅分配一小部分内存来容纳地址,并且不会为堆上分配任何内存空间。

    当您使用 new 创建类的实例时,您将分配堆上的空间,并将堆上空间的地址保存到堆栈上分配的一小块空间中。

  7. 匿名用户2024-01-25

    值类型的变量直接包含其数据,而引用类型的变量存储对其数据的引用,后者称为对象。

    1.值类型直接存储其值,引用类型存储值得引用的对,引用类型分为引用对象和被引用对象。

    2.值类型包括结构数值类型、布尔类型、用户定义的结构、枚举、可为 null 的类型。

    3.引用类型包括数组、用户定义的类、接口、委托、对象、字符串和数组的元素,无论它们是引用类型还是值类型,都存储在托管堆上。

    4.引用类型将引用存储在堆栈中,其实际存储位置位于托管堆上,引用类型部署在托管推送上,并且值类型始终在声明它的位置分配。

    5.值类型在内存管理中效率更高,不支持多态性,用作存储数据的载体,引用类型支持多态性,适合定义应用程序的行为。

  8. 匿名用户2024-01-24

    var 添加到对象,并使用 typeof()==int 或您想要的类型。

  9. 匿名用户2024-01-23

    区别: 1.值类型通常赋值在堆栈上,其变量直接包含变量的实例,使用起来更有效率。

    2. 引用类型是在托管堆上分配的,引用类型的变量通常包含指向实例的指针,变量通过该指针引用实例。

    3.值类型继承自valuetype(注:并继承自; 而引用类型继承自。 4.值类型变量包含其实例数据,每个变量保存自己的数据副本(copy),因此默认情况下,值类型的参数传递不会影响参数本身; 另一方面,引用变量存储其数据的引用地址,因此通过引用传递参数会影响参数本身,因为两个变量将引用内存中的相同地址。

    5、值有两种:打包和拆包; 引用类型只有一种形式,即装箱。 在下一节中,我将专门介绍这个话题。

    6、典型的值类型有:struct、enum和大量的内置值类型; 任何可以称为类的东西都可以说是引用类型。

    7.值类型的内存不受GC(垃圾**,gabage回收)控制,在作用域结束时,值类型会自行释放,从而减轻了对托管堆的压力,因此具有性能优势。 例如,结构通常比类更有效; 至于内存的参考类型**,则由GC完成,Microsoft甚至建议用户最好不要自己释放内存。

    8.值类型是密封的,所以值类型不能作为任何其他类型的基类,但可以是单继承或多继承接口; 另一方面,引用类型通常是继承的。

    9、值类型不多态; 而引用类型是多态的。

    10. 值类型变量不能为空值,值类型会自行初始化为值 0; 默认情况下,引用类型变量创建为 null 值,指示没有指向任何托管堆的引用地址。 对值为 null 的引用类型执行的任何操作都将引发 nullreferenceException 异常。

    11. 值类型有两种状态:装箱和未装箱,运行时为所有值类型提供装箱表单; 另一方面,引用类型通常只有一种形式:拳击。

  10. 匿名用户2024-01-22

    1)值类型存储在内存堆栈中,引用类型数据存储在内存堆中,内存单元存储在地址堆中。

    2)值类型的访问速度快,引用类型的访问速度慢。

    3)值类型表示实际数据,引用类型表示对存储在内存堆中的数据的指针和引用。

    4)堆栈的内存自动释放,堆的内存被释放。GC 将自动释放 .NET。

    5)值类型继承自,引用类型继承自。

相关回答
24个回答2024-08-01

在 C 语言中,有两种类型:引用类型(例如字符串)和非引用类型(例如 int)。 引用类型实际上指向内存地址,并且字符串是不可变的,尽管它是引用类型。 >>>More

3个回答2024-08-01

1. 首先,打开MATLAB软件,点击左上角的“新建”按钮,创建一个空脚本。 >>>More

6个回答2024-08-01

这是什么原因,只有类型。

11个回答2024-08-01

这也与人的体质有关,有的体质瘦弱,吃多少都不会发胖; 有些人的体质是喝冷水,体重增加。

4个回答2024-08-01

钱学森的散文采用了倒叙的手法。

倒叙:根据表达的需要,窦聪将事件的结局或最重要、最突出的片段提到文章的开头,然后按照事件发展的先后顺序从头叙述事件。 >>>More