C#之方法传递结构和类之间的区别学习案例

来源:互联网 发布:rsa512算法安全不 编辑:程序博客网 时间:2024/06/04 17:39
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                //方法传递的是对类的引用。            }        }    }}

0 0
原创粉丝点击