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
//方法传递的是对类的引用。
}
}
}
}
C#之方法传递结构和类之间的区别学习案例
本文转载:CSDN博客