base (C#-referens)

Nyckelordet base används 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 har åsidosatts av en annan metod.

  • Ange vilken basklasskonstruktor som ska anropas när du skapar instanser av den härledda klassen.

Basklassåtkomst tillåts endast i en konstruktor, i en instansmetod och i en instansegenskapsåtkomst.

Om du använder nyckelordet base inifrån en statisk metod visas ett fel.

Basklassen som används är basklassen som anges i klassdeklarationen. Om du till exempel anger class ClassB : ClassAanvänds medlemmarna i ClassA från ClassB, oavsett basklassen för ClassA.

Exempel 1

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 är det möjligt att 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: {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
*/

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

Exempel 2

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

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

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