using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyTest { class Program { static void Main(string[] args) { MyClass first = new MyClass(); first.value = "原值"; MyClass second = first; //显示原值 Console.WriteLine("原值:" + second.value); //显示改变值 first.value = "改变值"; Console.WriteLine("改变值:" + second.value); first = null; //Console.WriteLine("first为null后的first值:" + first.value);//这里会报空指针 Console.WriteLine("first为null后的second值:" + second.value); Console.ReadKey(); } } public class MyClass { public string value { get; set; } } }
由上可得:
1.首先MyClass是个引用类型
2.当first的值改变了,second中的值也改变了
3.当first置null时,虽然first中的指针被清空了(此时访问first会报空指针),但事实上内存里的对象并没有清空(此时访问second依然可以取到值)