Jaki wpływ ma słowo „nowe” na C # i dlaczego jest to tylko ostrzeżenie, gdy nie jest zatrudniony?

Rozważ następujący kod:

public abstract class Test1
{
    public object Data { get; set; }
}

public abstract class Test2<T> : Test1
{
    public T Data { get; set; }
}

Spowoduje to wygenerowanie następującego ostrzeżenia:

„Test2.Data” ukrywa odziedziczony element „Test1.Data”. Użyj nowego słowa kluczowego, jeśli ukrywanie było zamierzone.

Dlaczego jest to tylko ostrzeżenie i jaki wpływ będzie miało dodanie „nowego” słowa kluczowego?

Zgodnie z moimi testami nie mogę znaleźć żadnej różnicy po dodaniu „nowego” słowa kluczowego.

Nie zrozumcie mnie źle, jestem za tym, żeby być wyraźnym, ale byłem ciekawy, jak dodać „nowe”.

Moje jedyne przemyślenia na temat tego, co to może być:

Poprawiona czytelność dla ludziPewne oszczędności w czasie wykonywania, gdy kompilator nie jest zmuszony do wymyślenia nieuniknionego długiego dystansu

questionAnswers(4)

yourAnswerToTheQuestion