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所示。
执行结果如下:
姓名:Jerry 手机:1234567
姓名:Tom 手机:7654321
我们使用图示来演示上述过程中将结构entry赋给entry2的过程,实际上是将entry的数据复制到entry2中的过程,那么当修改entry2中的数据时,并不会对entry中的数据产生影响,如图13-2所示。
图 13-2 给结构赋值图示