base (Riferimenti per C#)

La parola chiave base viene utilizzata per accedere ai membri della classe base dall'interno di una classe derivata per:

  • chiamare un metodo nella classe base sottoposto a override da un altro metodo;

  • specificare quale costruttore della classe base dovrà essere chiamato per creare istanze della classe derivata.

L'accesso a una classe base è consentito solo in un costruttore, in un metodo di istanza o in una funzione di accesso alle proprietà delle istanze.

È errato utilizzare la parola chiave base all'interno di un metodo statico.

La classe base a cui si accede è la classe base specificata nella dichiarazione della classe. Ad esempio, se si specifica class ClassB : ClassA, l'accesso ai membri di ClassA viene eseguito da ClassB, indipendentemente dalla classe base di ClassA.

Esempio

In questo esempio sia la classe base Person che la classe derivata Employee utilizzano un metodo denominato Getinfo. Mediante la parola chiave base è possibile chiamare il metodo Getinfo nella classe base dall'interno della classe derivata.

    public class Person
    {
        protected string ssn = "444-55-6666";
        protected string name = "John L. Malgraine";

        public virtual void GetInfo()
        {
            Console.WriteLine("Name: {0}", name);
            Console.WriteLine("SSN: {0}", ssn);
        }
    }
    class Employee : Person
    {
        public string id = "ABC567EFG";
        public override void GetInfo()
        {
            // Calling the base class GetInfo method:
            base.GetInfo();
            Console.WriteLine("Employee ID: {0}", id);
        }
    }

    class TestClass
    {
        static void Main()
        {
            Employee E = new Employee();
            E.GetInfo();
        }
    }
    /*
    Output
    Name: John L. Malgraine
    SSN: 444-55-6666
    Employee ID: ABC567EFG
    */

Per ulteriori esempi, vedere new, virtual e override.

In questo esempio viene illustrato come specificare il costruttore della classe base che verrà chiamato durante la creazione di istanze di una classe derivata.

public class BaseClass
{
    int num;

    public BaseClass()
    {
        Console.WriteLine("in BaseClass()");
    }

    public BaseClass(int i)
    {
        num = i;
        Console.WriteLine("in BaseClass(int i)");
    }

    public int GetNum()
    {
        return num;
    }
}

public class DerivedClass : BaseClass
{
    // This constructor will call BaseClass.BaseClass()
    public DerivedClass() : base()
    {
    }

    // This constructor will call BaseClass.BaseClass(int i)
    public DerivedClass(int i) : base(i)
    {
    }

    static void Main()
    {
        DerivedClass md = new DerivedClass();
        DerivedClass md1 = new DerivedClass(1);
    }
}
/*
Output:
in BaseClass()
in BaseClass(int i)
*/

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Vedere anche

Riferimenti

Parole chiave di C#

this (Riferimenti per C#)

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#