值类型和引用类型的区别?写出C#的样例代码。

admin2019-03-29  58

问题 值类型和引用类型的区别?写出C#的样例代码。

选项

答案值类型的变量直接包含它们的数据,而引用类型的变量存储对它们的数据的引用,后者称为对象。对于引用类型,两个变量可能引用同一个对象,因此对一个变量的操作可能影响另一个变量所引用的对象。对于值类型,每个变量都有它们自己的数据副本(除ref和out参数变量外),因此对一个变量的操作不可能影响另一个变量。所有的值类型均隐式派生自System.ValueType。与引用类型不同,从值类型不可能派生出新的类型。值类型不可能包含null值。 using System; class MyClass { class SomeRef { public int x;} struct SomeVal { public int x; } static void Main(string[] args){ SomeRef r1= new SomeRef(); //分配在托管堆上 SomeVal v1 = new SomeVal(); //分配在堆栈上 r1.x = 5; //在托管堆上修改 v1.x = 5; //在堆栈中修改 SomeRef r2 = r1; //仅拷贝引用 SomeVal v2 = v1; //现在堆栈上分配,然后拷贝值 r1.x = 8; //改变了r1.x r2.x v1.x = 9; //仅改变了v1 Console.WriteLine(r1.x); //8 Console.WriteLine(r2.x); //8 Console.WriteLine(v1.x); //9 Console.WriteLine(v2.x); //5 } }

解析
转载请注明原文地址:https://kaotiyun.com/show/GRmZ777K
0

最新回复(0)