值类型

当用一个值类型变量给另外一个值类型的变量赋值时,会进行字段对字段的拷贝; 而用一个引用类型变量给另一个应用类型变量赋值时,只是给被赋值的变量copy了右边变量中存储的内存地址。

也就是说:

public class ClassA

{

string a;

}

ClassA a = new ClassA();

ClassA b = a;

此时a 和 b指向了同一个对象,改变b的值会影响a

public struct StructA

{

string a;

}

StructA a = new StructA();

StructA b = a;

此时,b和a指向的不同的空间,改变b的值不会影响a

但是如果值类型内部定义了引用类型,因为值类型的赋值只是浅copy,那么对被赋值变量的操作,依然会影响原变量的值

原文地址:https://www.cnblogs.com/lbsong/p/1657978.html