C# novo modificador

Resumo : neste tutorial, você aprenderá como usar o novo modificador C# para os membros de uma subclasse para ocultar explicitamente um membro com o mesmo nome da classe base.

Introdução ao novo modificador C#

Na herança , se um membro de uma subclasse tiver o mesmo nome que o membro de uma classe base, o compilador C# emitirá um aviso. Por exemplo:

class Person
{
    public string Name { get; set; }

    public string Introduce() => $"Hi, I'm {Name}.";
}

class Employee : Person
{
    public string JobTitle { get; set; }

    public string Introduce() => $"Hi, I'm {Name}. I'm a {JobTitle}.";
}Linguagem de código:  C#  ( cs )

Neste exemplo:

  • A Personé a classe base e a Employeeé uma subclasse que herda da Personclasse.
  • Ambas Personas Employeeclasses e têm o mesmo método Introduce()que retorna uma string.

O compilador C# emite o seguinte aviso:

'Employee.Introduce()' hides inherited member 'Person.Introduce()'. Use the new keyword if hiding was intended.Linguagem de código:  texto simples  ( texto simples )

Indica claramente que o Introduce()método da Employeeclasse esconde o Introduce()método da Personclasse.

Quando um método na subclasse oculta um membro da classe base, o membro da subclasse substitui o membro da classe base.

Normalmente, você não deseja ocultar um método da classe base. Geralmente, isso acontece por acidente quando você adiciona um método à classe base com o mesmo nome de um método da subclasse. Portanto, o compilador emite o aviso para ajudá-lo a reconhecer antecipadamente uma consequência não intencional.

Entretanto, se você realmente quiser ocultar um método da classe base, poderá usar o novo modificador para o membro na subclasse. Por exemplo:

class Person
{
    public string Name { get; set; }

    public string Introduce() => $"Hi, I'm {Name}.";
}

class Employee : Person
{
    public string JobTitle { get; set; }

    public new string Introduce() => $"Hi, I'm {Name}. I'm a {JobTitle}.";
}Linguagem de código:  C#  ( cs )

Neste exemplo, adicionamos o novo modificador ao Introduce()método. O novo modificador comunica nossa intenção ao compilador e outros desenvolvedores de que o Introduce()método duplicado não é um acidente. Além disso, o novo modificador suprime o aviso do compilador.

Além dos métodos, você pode usar o novo modificador para outros membros, como campos, propriedades e indexadores.

Resumo

  • Use o novo modificador C# para os membros da subclasse para ocultar os membros de uma classe base.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *