值类型引用类型区别

例子

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo2
{
    internal class Program
    {
        static void Main(string[] args)
        {

            #region 值类型
            int a = 1;
            int b = a;
            b = 2;
            Console.WriteLine("a="+a);  //#结果1
            //Console.ReadLine();
            #endregion

            #region 引用类型

            int[] aa = {1,2};
            int[] bb = aa;
            bb[0] = 11;
            bb[1] = 12;
            Console.WriteLine("aa[0]={aa[0]}  aa[1]={aa[1]}");  //#结果11,12
            Console.ReadLine();
            #endregion
        }


    }
}

值类型引用类型区别_第1张图片

结果

值类型引用类型区别_第2张图片

主要的区别是值是内存复制了一份,是新的独立复本,所以他们不相互影响;引用类型只复制引用的地址,内存是共享的。

值类型(Value Types)

  1. 存储方式:值类型的数据存储在栈内存中。栈是一种固定大小的内存,用于存储局部变量和方法调用的信息。
  2. 复制行为:当值类型的数据被赋值给另一个变量或传递给方法时,它们会被复制。这意味着每个变量都有其自己的独立副本。
  3. 不受垃圾回收管理:值类型的内存管理是静态的,不受垃圾回收器的影响。它们在超出其范围时自动被销毁。

一些常见的值类型包括整数(int)、浮点数(float)、字符(char)等。

引用类型(Reference Types)

  1. 存储方式:引用类型的数据存储在堆内存中。堆是一种动态分配的内存,用于存储对象和数据结构。
  2. 复制行为:当引用类型的数据被赋值给另一个变量或传递给方法时,只复制引用(内存地址),而不是实际数据。这意味着多个变量可以引用相同的数据。

你可能感兴趣的:(#,C#,java,开发语言)