using System;
//定义Change 方法的接口
interface IChangeBoxedPoint
{
void Change(Int32 x,Int32 y);
}
//让Point值类型实现IChangeBoxedPoint接口
struct Point:IChangeBoxedPoint
{
public Int32 x,y;
public void Change(Int32 x,Int32 y)
{
this.x=x;
this.y=y;
}
public override String ToString()
{
return String.Format("({0},{1})",x,y);
}
}
class CPoint:IChangeBoxedPoint
{
public Int32 x,y;
#region IChangeBoxedPoint 成员
public void Change(Int32 x, Int32 y)
{
// TODO: 添加 CPoint.Change 实现
this.x=x;
this.y=y;
}
#endregion
public override String ToString()
{
return String.Format("({0},{1})",x,y);
}
}
class App
{
static void Main()
{
Point p=new Point();
p.x=p.y=1;
Console.WriteLine(p);//显示(1,1)
p.Change(2,2);
Console.WriteLine(p);//显示(2,2)
Object o=p;
Console.WriteLine(o);//显示(2,2)
((Point)o).Change(3,3);
Console.WriteLine(o);//显示(2,2)
//对p执行装箱,然后改变已装箱对象,最后将之丢弃
((IChangeBoxedPoint)p).Change(4,4);调用接口函数时,进行装箱
Console.WriteLine(p);//显示(2,2)
//改变已装箱对象,并显示其内容
((IChangeBoxedPoint)o).Change(5,5);
Console.WriteLine(o);//显示(5,5)
CPoint cp=new CPoint();
cp.x=cp.y=1;
Console.WriteLine(cp);//显示(1,1)
cp.Change(2,2);
Console.WriteLine(cp);//显示(2,2)
Object co=cp;
Console.WriteLine(co);//显示(2,2)
((CPoint)co).Change(3,3);
Console.WriteLine(co);//显示(3,3)
//对p执行装箱,然后改变已装箱对象,最后将之丢弃
((IChangeBoxedPoint)cp).Change(4,4);
Console.WriteLine(cp);//显示(4,4)
//改变已装箱对象,并显示其内容
((IChangeBoxedPoint)co).Change(5,5);
Console.WriteLine(co);//显示(5,5)
Console.ReadLine();
}
}