base (C#-Referenz)
Mit dem base-Schlüsselwort kann innerhalb einer abgeleiteten Klasse auf Member der Basisklasse zugegriffen werden:
Rufen Sie eine Methode der Basisklasse auf, die durch eine andere Methode überschrieben wurde.
Geben Sie an, welcher Konstruktor der Basisklasse beim Erstellen von Instanzen der abgeleiteten Klasse aufgerufen werden soll.
Ein Zugriff auf eine Basisklasse ist nur in einem Konstruktor, einer Instanzenmethode oder einem Instanzeneigenschaften-Accessor zulässig.
Das base-Schlüsselwort darf nicht innerhalb einer statischen Methode verwendet werden.
Die Basisklasse, auf die zugegriffen wird, ist die in der Klassendeklaration angegebene Basisklasse. Wenn Sie z. B. class ClassB : ClassA angeben, wird auf die Member von ClassA aus ClassB zugegriffen, unabhängig von der Basisklasse von ClassA.
Beispiel
In diesem Beispiel verfügen sowohl die Person-Basisklasse als auch die abgeleitete Employee-Klasse über eine Methode mit der Bezeichnung Getinfo. Mithilfe des base-Schlüsselworts kann die Getinfo-Methode für die Basisklasse aus der abgeleiteten Klasse aufgerufen werden.
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
*/
Weitere Beispiele finden Sie unter new, virtual und override.
In diesem Beispiel wird gezeigt, wie der aufgerufene Basisklassenkonstruktor angegeben werden kann, wenn Instanzen einer abgeleiteten Klasse erstellt werden.
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)
*/
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in der C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.