利用接口来改变已装箱值类型中的字段
1
using System;
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
//定义Change方法的接口
4
interface IChangeBoxedPoint
5
{
6
void Change(Int32 x, Int32 y);
7
}
8![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
//让Point值类型实现IChangeBoxedPoint接口
10
struct Point : IChangeBoxedPoint
11
{
12
public Int32 x, y;
13![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
public void Change(Int32 x, Int32 y)
15
{
16
this.x = x;
17
this.y = y;
18
}
19![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
public override string ToString()
21
{
22
return String.Format("({0},{1})", x, y);//{0},{1}-->1,1没有括号
23
}
24
}
25
class App
26
{
27
static void Main()
28
{
29
Point p = new Point();
30
p.x = p.y = 1;
31
Console.WriteLine(p);
32![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
p.Change(2, 2);
34
Console.WriteLine(p);//这里p属于WriteLine重载的哪一种参数 是string?
35![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
Object o = p;
37
Console.WriteLine(o);//output (2,2)
38![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
((Point)o).Change(3, 3);//在栈上改变临时的Point
40
Console.WriteLine(o);//output(2,2)
41![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
Console.WriteLine("------");
43
//对p执行装箱,改变已装箱对象,丢弃该对象
44
((IChangeBoxedPoint)p).Change(4, 4);
45
//Change返回之后,已装箱对象(p)立即成为可被垃圾收集器收集的垃圾对象
46
Console.WriteLine(p);//output(2,2)
47![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
Console.WriteLine("00000000");
49
//由o引用的已装箱形式的Point被转型为一个IChangeBoxedPoint
50
//这里无需装箱,因为o已经是一个已经装箱的Point:Object o=p;
51
((IChangeBoxedPoint)o).Change(5, 5);
52
//接口方法Change允许我们改变一个已装箱Point对象中的字段
53
Console.WriteLine(o);//(5,5)
54
Console.WriteLine(p);//(2,2)
55![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
Console.Read();
58
}
59
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)