I know it is commonly used as a lock object, but is that really sufficient reason? What is the meaning of
object o = new object();
An non-abstract class is something that represents actual objects. ‘asdasdf’ is a string. What actual instance can there be of ‘object’ class? It doesn’t make sense, OOP-wise. My question is if there is some practical reason for its existence (besides being used as a lock object).
Sometimes you just need an Object, and nothing else, such as when using a random reference type for things like implementing multithreading locks. Not making object abstract allows use in those situations. The Monitor.Enter and Monitor.Exit classes (which is the basis behind the ‘lock’ keyword in C#) can acquire a lock on any given object, regardless of implementation.