using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace struct_test { class Program { class theClass { public string willIChange; } //theStruct结构声明 struct theStruct { public string willIChange; } class TestClass_Struct { static void ClassTaker(theClass c) { c.willIChange = "旧金山"; } static void StructTaker(theStruct s) { s.willIChange = "纽约"; } static void Main() { theClass testClass = new theClass(); //实例化一个类 theStruct testStruct = new theStruct();//实例化一个结构 testClass.willIChange = "北京"; //赋值 testStruct.willIChange = "上海"; Console.WriteLine("传递类实例之前的内容等于={0}",testClass.willIChange); Console.WriteLine("传递结构实例之前的内容等于={0}",testStruct.willIChange); Console.WriteLine(); ClassTaker(testClass); StructTaker(testStruct); Console.WriteLine("传递类实例之后内容等于={0}",testClass.willIChange); Console.WriteLine("传递结构实例之后内容等于={0}",testClass.willIChange); //本实例的输出表明,当向ClassTaker方法传递类实例是,只更改类字段的值。但是想StructTaker方法 //传递结构实例并不更改结构字段。这是因为向StructTaker方法传递的是结构的副本,而向ClassTaker //方法传递的是对类的引用。 } } } }