在学习接口继承的时候发现书上有这么个例子,看了之后晕死了,是不是以后就不用值类型了呢?
using System;
![](/Images/OutliningIndicators/None.gif)
//定义Change 方法的接口
interface IChangeBoxedPoint
{
void Change(Int32 x,Int32 y);
}
![](/Images/OutliningIndicators/None.gif)
//让Point值类型实现IChangeBoxedPoint接口
struct Point:IChangeBoxedPoint
{
public Int32 x,y;
public void Change(Int32 x,Int32 y)
{
this.x=x;
this.y=y;
}
![](/Images/OutliningIndicators/InBlock.gif)
public override String ToString()
{
return String.Format("({0},{1})",x,y);
}
}
class CPoint:IChangeBoxedPoint
{
public Int32 x,y;
IChangeBoxedPoint 成员
public override String ToString()
{
return String.Format("({0},{1})",x,y);
}
}
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
class App
{
static void Main()
{
Point p=new Point();
p.x=p.y=1;
Console.WriteLine(p);//显示(1,1)
![](/Images/OutliningIndicators/InBlock.gif)
p.Change(2,2);
Console.WriteLine(p);//显示(2,2)
![](/Images/OutliningIndicators/InBlock.gif)
Object o=p;
Console.WriteLine(o);//显示(2,2)
![](/Images/OutliningIndicators/InBlock.gif)
((Point)o).Change(3,3);
Console.WriteLine(o);//显示(2,2)
![](/Images/OutliningIndicators/InBlock.gif)
//对p执行装箱,然后改变已装箱对象,最后将之丢弃
((IChangeBoxedPoint)p).Change(4,4);
Console.WriteLine(p);//显示(2,2)
![](/Images/OutliningIndicators/InBlock.gif)
//改变已装箱对象,并显示其内容
((IChangeBoxedPoint)o).Change(5,5);
Console.WriteLine(o);//显示(5,5)
![](/Images/OutliningIndicators/InBlock.gif)
CPoint cp=new CPoint();
cp.x=cp.y=1;
Console.WriteLine(cp);//显示(1,1)
![](/Images/OutliningIndicators/InBlock.gif)
cp.Change(2,2);
Console.WriteLine(cp);//显示(2,2)
![](/Images/OutliningIndicators/InBlock.gif)
Object co=cp;
Console.WriteLine(co);//显示(2,2)
![](/Images/OutliningIndicators/InBlock.gif)
((CPoint)co).Change(3,3);
Console.WriteLine(co);//显示(3,3)
![](/Images/OutliningIndicators/InBlock.gif)
//对p执行装箱,然后改变已装箱对象,最后将之丢弃
((IChangeBoxedPoint)cp).Change(4,4);
Console.WriteLine(cp);//显示(4,4)
![](/Images/OutliningIndicators/InBlock.gif)
//改变已装箱对象,并显示其内容
((IChangeBoxedPoint)co).Change(5,5);
Console.WriteLine(co);//显示(5,5)
![](/Images/OutliningIndicators/InBlock.gif)
Console.ReadLine();
![](/Images/OutliningIndicators/InBlock.gif)
}
}
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)