Que efeito a palavra-chave “new” tem em C # e por que é apenas um aviso quando não está empregado?
Considere o seguinte código:
public abstract class Test1
{
public object Data { get; set; }
}
public abstract class Test2<T> : Test1
{
public T Data { get; set; }
}
Isso gerará o seguinte aviso:
'Test2.Data' oculta membro herdado 'Test1.Data'. Use a nova palavra-chave se a ocultação foi planejada.
Por que isso é apenas um aviso e qual será o efeito da adição da "nova" palavra-chave?
De acordo com o meu teste, não consigo encontrar nenhuma diferença quando a palavra-chave "new" é adicionada.
Não me entenda mal, sou todo para ser explícito, mas fiquei curioso quanto ao benefício de adicionar "novo".
Meus únicos pensamentos sobre o que pode ser são:
Melhor legibilidade humanaAlguns salvando em tempo de execução quando o compilador não é deixado para descobrir o inevitável o caminho mais longo