Using instances of Object for lock

When using C#’s inbuilt lock statement an instance of some type is needed, but its state does not matter. An instance of object is perfect for this:

publicclassThreadSafe{privatestaticreadonlyobjectlocker=newobject();publicvoidSomeThreadSafeMethod(){lock(locker){// Only one thread can be here at a time.
}}}

NB. instances of Type should not be used for this (in the code above typeof(ThreadSafe)) because instances of Type are shared across AppDomains and thus the extent of the lock can expectedly include code it shouldn’t (eg. if ThreadSafe is loaded into two AppDomains in the same process then locking on its Type instance would mutually lock).