basis (C#-verwijzing)
Het base
trefwoord wordt gebruikt voor toegang tot leden van de basisklasse vanuit een afgeleide klasse. Gebruik dit als u het volgende wilt doen:
Roep een methode aan op de basisklasse die door een andere methode is overschreven.
Geef op welke constructor met basisklasse moet worden aangeroepen bij het maken van exemplaren van de afgeleide klasse.
De toegang tot de basisklasse is alleen toegestaan in een constructor, in een instantiemethode en in een exemplaareigenschapstoegangsor.
Als u het base
trefwoord vanuit een statische methode gebruikt, krijgt u een foutmelding.
De basisklasse die wordt geopend, is de basisklasse die is opgegeven in de klassedeclaratie. Als u bijvoorbeeld opgeeft class ClassB : ClassA
, worden de leden van ClassA geopend vanuit ClassB, ongeacht de basisklasse van ClassA.
Voorbeeld 1
In dit voorbeeld hebben zowel de basisklasse Person
als de afgeleide klasse Employee
een methode met de naam GetInfo
. Met behulp van het base
trefwoord kunt u de GetInfo
methode van de basisklasse aanroepen vanuit de afgeleide klasse.
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
*/
Zie nieuwe, virtuele en onderdrukking voor aanvullende voorbeelden.
Voorbeeld 2
In dit voorbeeld ziet u hoe u de basisklasseconstructor opgeeft die wordt aangeroepen bij het maken van exemplaren van een afgeleide klasse.
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#-taalspecificatie
Zie de C#-taalspecificatie voor meer informatie. De taalspecificatie is de definitieve bron voor de C#-syntaxis en het gebruik.