Какой эффект имеет ключевое слово «new» в C # и почему это только предупреждение, когда оно не используется?

Рассмотрим следующий код:

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

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

Это сгенерирует следующее предупреждение:

'Test2.Data' hides inherited member 'Test1.Data'. Use the new keyword if hiding was intended.

Почему это только предупреждение, и какой эффект приведет к добавлению & quot; нового & quot; ключевое слово есть?

Согласно моим испытаниям, я не могу найти никакой разницы после того, как & quot; новый & quot; Ключевое слово добавлено.

Не поймите меня неправильно, я все за откровенность, но мне было любопытно, как добавить «новый».

Мои единственные мысли о том, что это может быть:

Improved human readability Some saving at run-time when the compiler isn't left to figure the inevitable out the long way around

Ответы на вопрос(4)

Ваш ответ на вопрос