2
respostas

[Dúvida] Uso da palavra-chave VIRTUAL

Bom dia a todos. Pra mim ainda não ficou claro a utilidade do uso da palavra-chave "virtual". Alguém consegue me explicar melhor?

2 respostas

O virtual serve para que você permita que uma classe filha consiga modificar o funcionamento de uma função da classe pai. Exemplo:

using System;
                    
public class Program
{
    public static void Main()
    {
        var foo = new Foo();
        var bar = new Bar();
        
        foo.Print("Exemplo"); // Exemplo
        bar.Print("Exemplo"); // Exemplo do virtual
    }
}


public class Foo
{
    public virtual void Print(string message)
    {
        Console.WriteLine(message);
    }
}


public class Bar : Foo
{
    public override void Print(string message)
    {
        Console.WriteLine(message + " do virtual");
    }
}

Renato, pegando carona na explicação acima, é isso mesmo, o virtual permite que um método possa ser sobrescrito posteriormente.

Mas, porque fazemos isso?

Fazemos isso para que alguma parte da nossa solução possa então interferir no get ou set, que são métodos das nossas propriedades.

Com qual propósito?

Por exemplo, o .Net pode sobrescrever o .get para que ele faça carga lenta da lista de músicas de um gênero ou da lista de gêneros de uma música.

Então, como permitirmos que isso seja feito com virtual, o UseLazyLoadingProxies pode sobrescrever (override) o get, colocando um código modificado no lugar, que fará a carga lenta.

Se quiser ver uma aula sobre isso, pode ver no curso .NET: persistindo dados com Entity Framework Core, Item 05.Relacionamento, aulas 2 e 4.

Espero ter ajudado.