Example #1
0
 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
 }
Example #2
0
    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));
    }
Example #3
0
    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();
    }
Example #4
0
    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();
    }