demo 来自 CLR via C#(第三版)
View Code
1 static void Main(string[] args) 2 { 3 Point p = new Point(1, 1); 4 Console.WriteLine(p); 5 6 p.Change(2, 2); 7 Console.WriteLine(p); 8 9 Object o = p;10 Console.WriteLine(o);11 12 ((Point)o).Change(3, 3);13 Console.WriteLine(o);14 15 ((IChangeBoxedPoint)p).Change(4, 4);16 Console.WriteLine(p);17 18 ((IChangeBoxedPoint)o).Change(5, 5);19 Console.WriteLine(o);20 }
View Code
1 public interface IChangeBoxedPoint 2 { 3 void Change(Int32 x, Int32 y); 4 } 5 6 public struct Point : IChangeBoxedPoint 7 { 8 private Int32 m_x, m_y; 9 public Point(Int32 x, Int32 y)10 {11 m_x = x;12 m_y = y;13 }14 15 public void Change(Int32 x, Int32 y)16 {17 m_x = x;18 m_y = y;19 }20 21 public override string ToString()22 {23 return string.Format("({0},{1})", m_x, m_y);24 }25 }