私はしばらくの間、Objectクラスにパブリックなパラメーターなしのコンストラクターがある理由、または実際にマークされていない理由を特定しようと試みてきましたabstract。
Object;のパブリック コンストラクターを (明示的に) 呼び出す必要がある合理的な状況が見当たりません。派生型のコンストラクターにのみ関心があります。
暗黙的または明示的に呼び出すことができるデフォルト コンストラクターをObject他のすべてのコンストラクターに与えるために、 でデフォルト コンストラクターを提供する必要性を理解しています。Type確かに、このデフォルト コンストラクターは としてマークするだけprotectedで済みますね。
スレッド同期で「空のオブジェクト」を作成する人を見てきました。しかし、このシナリオでは「実際のオブジェクト」をロックする方が正しいのではないでしょうか?
同様に、Objectクラスによって公開される機能は派生型 (または静的に呼び出される) にのみ役立つため、抽象クラスではないのはなぜですか? これは、それ自体で意味のあるインスタンス化が可能であるという印象をプログラマーに与えるクラスを持つよりも優れた設計のように思えます。
答えは CLR の内部動作と関係があるのではないかと思いますObjectが、パブリック コンストラクターが必要な理由と、それをマークできない理由があるかどうかを知りたいabstractです。