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 altre informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.