public static void Main() { Point p = new Point(7, 3); p.Print(); Console.WriteLine(p.ToString()); // Redefinido em Point Console.WriteLine(p.GetType()); // box + call Console.WriteLine(p.GetHashCode()); // Herdado de Object }
static void Main() { Point p1 = new Point(5, 7); p1.Print(); Printer pr = p1; // box; pr.Print(); Point p2 = new Point(5, 7); Console.WriteLine(p1.Equals(p2)); }
static void Main() { System.Int32 n1; // Utilização do tipo System.Int32 int n2; // Utilização da designação primitiva System.String s1 = "ISEL"; string s2 = "super"; // Utilização da designação primitiva A a = new A(); // uma instância alocada em Heap => IL newobj Point p = new Point(); // uma instância em Stack => IL initobj a.Print(); p.Print(); }
static void conv6() { Point p1 = new Point(5, 7); Object r1 = p1; // box; int n2 = 789; Object r2 = n2; // box; p1 = (Point)r1; // unbox // p1 = (Point)n1; // unbox => CastClassException Printer pr = p1; // Box p1 = (Point) pr; // unbox pr.Print(); /* * O CLR não permite alterar o estado de uma instância (de tipo valor) * que esteja boxed. */ // ((Point) pr).x = 78; // Erro de compilação pr.SetX(78); pr.Print(); /* * !!!!! CUIDADO * */ p1.Print(); p1.x = 8; p1.Print(); ((Printer) p1).SetX(9); // Erro pq o metodo SetX so é acessivel com uma referncia do tipo Printer p1.Print(); }