7

virtualおよびキーワードの定義は知っていますが sealed、どちらもメソッドで使用しない場合、メソッドをデフォルトでオーバーライドできますか?

私はvb.netのバックグラウンドから来ています。vb.net (MSDN から) では次のようになります。

Overridable または NotOverridable 修飾子が指定されていない場合、既定の設定は、プロパティまたはメソッドが基本クラスのプロパティまたはメソッドをオーバーライドするかどうかによって異なります。プロパティまたはメソッドが基本クラスのプロパティまたはメソッドをオーバーライドする場合、既定の設定は Overridable です。それ以外の場合は、NotOverridable です。

それがC#にも当てはまるかどうか知りたいだけです。

4

4 に答える 4

6

いいえ、できません。派生クラスでメソッドをオーバーライドできるようにするには、メソッドを仮想として明示的にマークする必要があります。

ただし、できることは、newキーワードを使用してメソッドを非表示にすることです。(MSDNドキュメント)

封印されたキーワードは、クラス定義とメソッドの両方で使用されます。クラスからの継承やメソッドのオーバーライドは禁止されています。デフォルトでは、このキーワードを使用しない場合、他のユーザーがクラスから継承できます。(MSDNドキュメント

于 2013-03-14T21:01:30.260 に答える
6

デフォルトでは、C# のメソッドは仮想ではありません。

于 2013-03-14T20:58:34.640 に答える
2

いいえ。Java とは異なり、C# のメソッドはvirtualデフォルトではありません。どちらもsealedではありませんが、通常のメソッドであるためオーバーライドできません。

于 2013-03-14T20:59:10.543 に答える
2

いいえ、非仮想メソッドをオーバーライドすることはできません。new キーワードは基本クラスの実装を隠すだけであり、お勧めできません。

Anders Hejlsberg とのディスカッションはこちら

于 2013-03-14T21:00:56.190 に答える