当用一个值类型变量给另外一个值类型的变量赋值时,会进行字段对字段的拷贝; 而用一个引用类型变量给另一个应用类型变量赋值时,只是给被赋值的变量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,那么对被赋值变量的操作,依然会影响原变量的值