Dot-Net
為什麼 System.Object 在 .NET 中不是抽象的?
我知道它通常用作鎖定對象,但這真的是充分的理由嗎?是什麼意思
object o = new object();非抽像類是代表實際對象的東西。“asdasdf”是一個字元串。“對象”類的實際實例是什麼?這是沒有意義的,OOP 明智的。我的問題是它的存在是否有一些實際原因(除了用作鎖定對象之外)。
有時您只需要一個對象,而不需要其他任何東西,例如在使用隨機引用類型來實現多執行緒鎖之類的事情時。不使對象抽象允許在這些情況下使用。Monitor.Enter 和 Monitor.Exit 類(這是 C# 中“lock”關鍵字背後的基礎)可以獲取任何給定對象的鎖,而不管實現如何。
回答這個問題的最簡單方法是問另一個問題:Object 類有什麼抽象的原因嗎?因為沒有理由讓它是抽象的,所以它不是。