Operatore in C# con esempio

Operatore in C# con esempio

Per ereditarietà, sappiamo che una classe base contiene sempre la maggior parte delle caratteristiche comuni e sappiamo anche che una variabile di riferimento della classe base può puntare all'oggetto della classe derivata, ma viceversa non è possibile perché una classe derivata è una versione estesa di una classe base class e contiene più funzionalmente di una classe base. Per questo motivo, possiamo facilmente puntare un oggetto di classe derivato a una variabile di riferimento di classe base utilizzando il cast del tipo, ma viceversa non è possibile perché si verificherà un errore di runtime.

using System;

namespace Hello
{   
    //Employee Class
     class Employee
    {
        public void PrintName()
        {
            Console.WriteLine("This is an Employee Class.");
        }

    }

    //Manager Class
    class Manager:Employee
    {
        public new void PrintName()
        {
            Console.WriteLine("This is a Manager Class.");
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            Manager man = new Manager();

            //Type casting
            Employee emp = (Employee)man;

            emp.PrintName();
        }
            
    }
}

 Risultato:

C'è sempre una relazione tra classe base e classe derivata. Ad esempio, considera che esiste una classe base chiamata Employee. Hai altre 2 classi, denominate Manager e Supervisor, che stanno ereditando dalla classe base Employee. Con il concetto di è una relazione, il manager è un dipendente e il supervisore è un dipendente. Ogni Dipendente non può essere Manager o Supervisore.

Durante il casting del tipo, è possibile che si verifichino errori di runtime e per superare questo problema, controlliamo sempre la relazione is. Per trovare questa relazione è-una, utilizziamo l'operatore is, che restituisce un valore booleano (vero o falso). Utilizzando l'operatore is, puoi verificare se una classe sottostante dell'oggetto sta ereditando da un'altra classe o meno.

using System;

namespace Hello
{   
    //Employee Class
     class Employee
    {
        public void PrintName()
        {
            Console.WriteLine("This is an Employee Class.");
        }

    }

    //Manager Class
    class Manager:Employee
    {
        public new void PrintName()
        {
            Console.WriteLine("This is a Manager Class.");
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            Manager man = new Manager();

            //This is-a relationship check
          if(man is Employee)
          {
              Employee emp = (Employee)man;
              emp.PrintName();
          }          

           
        }
            
    }
}

 Risultato: