13.3 给结构赋值

将一个结构变量赋值给另一个结构变量,就是把数据从一个结构复制到另一个结构。而类则不同,在类的变量之间,复制的是引用,而不是类的数据。因此,当结构比较大的时候,这种数据复制机制会带来较大的性能开销(关于性能详见13.7.2节)。接下来,我们使用一段代码来演示这个过程,如代码清单13-4所示。

代码清单13-4 给结构赋值


1 public struct AddressBookEntry//定义一个结构

2{

3 public string Name;

4 public string MobilePhone;

5}

6

7 public class StructSample

8{

9 public static void Main()

10{

11 AddressBookEntry entry=new AddressBookEntry();

12 entry.Name="Jerry";

13 entry.MobilePhone="1234567";

14

15 AddressBookEntry entry2=entry;//将entry赋给entry2

16 entry2.Name="Tom";//改变entry2的值

17 entry2.MobilePhone="7654321";//改变entry2的值

18

19 System.Console.WriteLine(“姓名:{0}手机:{1}”,entry.Name,entry.MobilePhone);

20 System.Console.WriteLine(“姓名:{0}手机:{1}”,entry2.Name,entry2.MobilePhone);

21}

22}


关于代码清单13-4的说明如表13-1所示。

13.3 给结构赋值 - 图1

执行结果如下:


姓名:Jerry 手机:1234567

姓名:Tom 手机:7654321


我们使用图示来演示上述过程中将结构entry赋给entry2的过程,实际上是将entry的数据复制到entry2中的过程,那么当修改entry2中的数据时,并不会对entry中的数据产生影响,如图13-2所示。

13.3 给结构赋值 - 图2

图 13-2 给结构赋值图示