MSDNによると:
newキーワードを修飾子として使用すると、基本クラスから継承されたメンバーが明示的に非表示になります。継承されたメンバーを非表示にすると、メンバーの派生バージョンが基本クラスバージョンに置き換わります。新しい修飾子を使用せずにメンバーを非表示にすることはできますが、結果は警告になります。newを使用してメンバーを明示的に非表示にすると、この警告が抑制され、派生バージョンが置換として意図されているという事実が文書化されます。
例:
class Base
{
int value;
virtual bool Foo()
{
value++;
}
}
class Derived : Base
{
int value;
override bool Foo()
{
value++;
}
}
new
Derived.value宣言に修飾子を追加する必要がありますか?何が変わりますか?