1. ホーム
  2. c#

[解決済み] なぜC#はデフォルトで非仮想的なメソッドを実装しているのか?

2022-12-01 18:47:17

疑問点

Javaと異なり、なぜC#はデフォルトでメソッドを非仮想関数として扱うのでしょうか? 他の可能性のある結果ではなく、パフォーマンスの問題である可能性が高いのでしょうか?

私は、既存のアーキテクチャが引き出しているいくつかの利点について、Anders Hejlsberg の段落を読んだことを思い出しました。しかし、副作用についてはどうでしょうか。デフォルトで非仮想的なメソッドを持つことは、本当に良いトレードオフなのでしょうか?

どのように解決するのか?

クラスは 設計されています。 でなければなりません。メソッドを持つ virtual をデフォルトで持つということは、クラス内のすべての関数を抜き出して別の関数に置き換えることができるということであり、これは本当に良いことではありません。多くの人は、クラスは本来 sealed であるべきだと考えている人もいます。

virtual メソッドもまた、若干のパフォーマンスの影響を持つ可能性があります。しかし、これは主な理由ではないでしょう。