Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La base
parola chiave viene usata per accedere ai membri della classe base dall'interno di una classe derivata. Utilizzalo se vuoi:
- Chiamare un metodo nella classe base sovrascritto da un altro metodo.
- Specificare il costruttore della classe base da chiamare durante la creazione di istanze della classe derivata.
L'accesso alla classe base è consentito solo in un costruttore, in un metodo di istanza e in una funzione di accesso alle proprietà dell'istanza. L'uso della base
parola chiave dall'interno di un metodo statico genera un errore.
La classe base a cui si accede è la classe base specificata nella dichiarazione di classe. Ad esempio, se si specifica class ClassB : ClassA
, i membri di ClassA sono accessibili da ClassB, indipendentemente dalla classe base di ClassA.
In questo esempio, sia la classe Person
base che la classe Employee
derivata hanno un metodo denominato GetInfo
. Usando la base
parola chiave , è possibile chiamare il GetInfo
metodo della 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: {name}");
Console.WriteLine($"SSN: {ssn}");
}
}
class Employee : Person
{
public readonly string id = "ABC567EFG";
public override void GetInfo()
{
// Calling the base class GetInfo method:
base.GetInfo();
Console.WriteLine($"Employee ID: {id}");
}
}
class TestClass
{
static void Main()
{
Employee E = new Employee();
E.GetInfo();
}
}
/*
Output
Name: John L. Malgraine
SSN: 444-55-6666
Employee ID: ABC567EFG
*/
In questo esempio viene illustrato come specificare il costruttore della classe base chiamato durante la creazione di istanze di una classe derivata.
public class BaseClass
{
private int num;
public BaseClass() =>
Console.WriteLine("in BaseClass()");
public BaseClass(int i)
{
num = i;
Console.WriteLine("in BaseClass(int i)");
}
public int GetNum() => 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)
*/
Per altri esempi, vedere new, virtual e override.
Specificazione del linguaggio C#
Per altre informazioni, vedere la specifica del linguaggio C#. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.