C# 值类型与引用类型的异同

时间:2022-03-22 08:43:34

int,bool,decimal等为值类型

List,Stream等为引用类型

用等号设置一个值类型变量等于另一个变量时,会完成复制,之后这两个变量相互之间没有任何影响;

对引用使用等号时,,这两个引用就会指向同一个对象

对于值类型和引用类型,变量声明和复制都是一样的。

int howMany = 25;

bool Scary = true;

List<double> temperatures = new List<double>();

int和bool为值类型,List为引用类型,他们都以相同的方式初始化

但一旦开始赋值就不同了。

值类型的赋值:

int fifteenMore = howMany;

fifteenMore += 15;

Console.WriteLine("howMany has {0},fifteenMore has {1}",howMany,fifteenMore);

输出:howMany has 25,fifteenMore has 40

引用类型赋值:

temperatures.Add(56.5D);

temperatures.Add(27.4D);

List<double> differentList = temperatures;

differentList.Add(62.9D);

Cosole.WriteLine("temperature has {0},differentlist has {1}",temperature.Count(),differentList.Count());

输出:temperatures has 3,differentList has 3