Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Используйте ключевое base слово для доступа к членам базового класса из производного класса. Используйте его, если вы хотите:
- Вызовите метод в базовом классе, переопределенном другим методом.
- Укажите, какой конструктор базового класса следует вызывать при создании экземпляров производного класса.
Доступ к базовому классу можно получить только в конструкторе, в методе экземпляра и в методе доступа к свойству экземпляра. Использование ключевого base слова из статического метода приводит к ошибке.
Справочные документы по языку C# описывают последнюю выпущенную версию языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.
Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.
Подсказка
Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей об истории версий языка C#.
Доступ к базовому классу — это базовый класс, указанный в объявлении класса. Например, если указать class ClassB : ClassA, вы обращаетесь к членам ClassA из ClassB независимо от базового класса ClassA.
В этом примере базовый класс Person и производный класс Employee имеют метод с именем GetInfo. С помощью base ключевого слова можно вызвать GetInfo метод базового класса из производного класса.
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
*/
В этом примере показано, как указать конструктор базового класса для вызова при создании экземпляров производного класса.
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)
*/
Дополнительные примеры см. в новых, виртуальных и переопределениях.
Спецификация языка C#
Дополнительные сведения см. в спецификации языка C# . Спецификация языка является авторитетным источником синтаксиса и использования C#.