fork(1) download
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Runtime.InteropServices;
  5. using System.Text;
  6. using Microsoft.CSharp;
  7.  
  8. namespace tpcs
  9. {
  10. class MainClass
  11. {
  12. internal interface IChangeBoxedPoint
  13. {
  14. void Change(Int32 x, Int32 y);
  15. }
  16. internal struct Point: IChangeBoxedPoint
  17. {
  18. private Int32 m_x, m_y;
  19.  
  20. public Point(Int32 x, Int32 y)
  21. {
  22. this.m_x = x;
  23. this.m_y = y;
  24. }
  25.  
  26. public void Change(Int32 x, Int32 y)
  27. {
  28. this.m_x = x;
  29. this.m_y = y;
  30. }
  31.  
  32. public override string ToString()
  33. {
  34. return string.Format("({0}, {1})", this.m_x.ToString(), this.m_y.ToString());
  35. }
  36. }
  37.  
  38. public static void Main(string[] args)
  39. {
  40. Console.WriteLine("Point p = new Point(1, 1); ");
  41. Point p = new Point(1, 1);
  42. Console.WriteLine("p: {0}, o: {1}" , p, "------");
  43.  
  44. Console.WriteLine("p.Change(2, 2); ");
  45. p.Change(2, 2);
  46. Console.WriteLine("p: {0}, o: {1}" , p, "------");
  47.  
  48. Console.WriteLine("Object o = p; ");
  49. Object o = p;
  50. Console.WriteLine("p: {0}, o: {1}" , p, o);
  51.  
  52. Console.WriteLine("((Point)o).Change(3, 3); ");
  53. ((Point)o).Change(3, 3);
  54. Console.WriteLine("p: {0}, o: {1}" , p, o);
  55.  
  56. Console.WriteLine("((IChangeBoxedPoint)p).Change(4, 4); ");
  57. ((IChangeBoxedPoint)p).Change(4, 4);
  58. Console.WriteLine("p: {0}, o: {1}" , p, o);
  59.  
  60. Console.WriteLine("((IChangeBoxedPoint)o).Change(5, 5); ");
  61. ((IChangeBoxedPoint)o).Change(5, 5);
  62. Console.WriteLine("p: {0}, o: {1}" , p, o);
  63. }
  64. }
  65. }
  66.  
Success #stdin #stdout 0.03s 24200KB
stdin
Standard input is empty
stdout
Point p = new Point(1, 1); 
p: (1, 1), o: ------
p.Change(2, 2); 
p: (2, 2), o: ------
Object o = p; 
p: (2, 2), o: (2, 2)
((Point)o).Change(3, 3); 
p: (2, 2), o: (2, 2)
((IChangeBoxedPoint)p).Change(4, 4); 
p: (2, 2), o: (2, 2)
((IChangeBoxedPoint)o).Change(5, 5); 
p: (2, 2), o: (5, 5)