Dela via


Grundnyckelordet

Använd nyckelordet base för att komma åt medlemmar i basklassen inifrån en härledd klass. Använd den om du vill:

  • Anropa en metod i basklassen som åsidosätts av en annan metod.
  • Ange vilken basklasskonstruktor som ska anropas när du skapar instanser av den härledda klassen.

Du kan bara komma åt basklassen i en konstruktor, i en instansmetod och i en instansegenskapsåtkomst. Om du använder nyckelordet base inifrån en statisk metod genereras ett fel.

C#-språkreferensen dokumenterar den senaste versionen av C#-språket. Den innehåller även inledande dokumentation för funktioner i offentliga förhandsversioner för den kommande språkversionen.

Dokumentationen identifierar alla funktioner som först introducerades i de tre senaste versionerna av språket eller i aktuella offentliga förhandsversioner.

Tips/Råd

Information om när en funktion först introducerades i C# finns i artikeln om språkversionshistoriken för C#.

Basklassen som du kommer åt är den basklass som du anger i klassdeklarationen. Om du till exempel anger class ClassB : ClassAfår du åtkomst till medlemmarna i ClassA från ClassB, oavsett basklassen för ClassA.

I det här exemplet har både basklassen Person och den härledda klassen Employee en metod med namnet GetInfo. Med hjälp av nyckelordet base kan du anropa GetInfo metoden för basklassen inifrån den härledda klassen.

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
*/

Det här exemplet visar hur du anger den basklasskonstruktor som ska anropas när du skapar instanser av en härledd klass.

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)
*/

Fler exempel finns i nytt, virtuellt och åsidosättning.

Språkspecifikation för C#

Mer information finns i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.

Se även