base (C# リファレンス)base (C# Reference)

base キーワードは、派生クラス内から基底クラスのメンバーにアクセスするために使います。The base keyword is used to access members of the base class from within a derived class:

  • 別のメソッドによってオーバーライドされた基底クラスのメソッドを呼び出します。Call a method on the base class that has been overridden by another method.

  • 派生クラスのインスタンスを作成するときに基底クラスのどのコンストラクターを呼び出す必要があるかを指定します。Specify which base-class constructor should be called when creating instances of the derived class.

基底クラスへのアクセスは、コンストラクター、インスタンス メソッド、またはインスタンスのプロパティ アクセサーにおいてのみ許可されます。A base class access is permitted only in a constructor, an instance method, or an instance property accessor.

静的メソッド内から base キーワードを使うとエラーになります。It is an error to use the base keyword from within a static method.

アクセスされる基底クラスは、クラス宣言で指定されている基底クラスです。The base class that is accessed is the base class specified in the class declaration. たとえば、class ClassB : ClassA と指定すると、ClassA の基底クラスに関係なく、ClassA のメンバーが ClassB からアクセスされます。For example, if you specify class ClassB : ClassA, the members of ClassA are accessed from ClassB, regardless of the base class of ClassA.

Example

この例では、基底クラス Person と派生クラス Employee の両方に、Getinfo という名前のメソッドがあります。In this example, both the base class, Person, and the derived class, Employee, have a method named Getinfo. base キーワードを使うことで、派生クラス内から基底クラスの Getinfo メソッドを呼び出すことができます。By using the base keyword, it is possible to call the Getinfo method on the base class, from within the derived class.

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

その他の例については、「new」、「virtual」、「override」をご覧ください。For additional examples, see new, virtual, and override.

Example

この例では、派生クラスのインスタンスを作成するときに呼び出される基底クラスのコンストラクターを指定する方法を示します。This example shows how to specify the base-class constructor called when creating instances of a derived class.

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# 言語仕様C# language specification

詳細については、「C# 言語の仕様」を参照してください。For more information, see the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.

関連項目See also