Проблема здесь в том, что у нас нет способа отличить действительный желаемый случай сокрытия от случайного случая сокрытия. Мы стараемся зарезервировать предупреждения для ситуаций, когда (1) код почти наверняка неправильный и (2) существует простой способ переписать код, чтобы исключить предупреждение, если указанный код действительно желательно.
Это часто желаемый случай из-за этого:
class Frog
{
private string name;
public Frog(string name)
{
this.name = name;
Вы не хотите менять поле «имя» на что-то другое, потому что оно полностью описательно как есть. Вы не хотите менять параметр «имя» на что-то другое, потому что вы хотите иметь возможность new Frog(name: "Kermit")
в C # 4 или Visual Basic. Поскольку сокрытие желательно, а код верен, мы не хотим выдавать предупреждение о сокрытии.