例子
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
}
}
}
结果
主要的区别是值是内存复制了一份,是新的独立复本,所以他们不相互影响;引用类型只复制引用的地址,内存是共享的。
值类型(Value Types):
- 存储方式:值类型的数据存储在栈内存中。栈是一种固定大小的内存,用于存储局部变量和方法调用的信息。
- 复制行为:当值类型的数据被赋值给另一个变量或传递给方法时,它们会被复制。这意味着每个变量都有其自己的独立副本。
- 不受垃圾回收管理:值类型的内存管理是静态的,不受垃圾回收器的影响。它们在超出其范围时自动被销毁。
一些常见的值类型包括整数(int)、浮点数(float)、字符(char)等。
引用类型(Reference Types):
- 存储方式:引用类型的数据存储在堆内存中。堆是一种动态分配的内存,用于存储对象和数据结构。
- 复制行为:当引用类型的数据被赋值给另一个变量或传递给方法时,只复制引用(内存地址),而不是实际数据。这意味着多个变量可以引用相同的数据。