- shared type system across all .net languages
- primitives data types library
- 5 kind of types:- classes
- structures
- enumerations
- interfaces
- delegates
 
Further read:
https://learn.microsoft.com/en-us/dotnet/standard/base-types/common-type-system
Further read:
https://learn.microsoft.com/en-us/dotnet/standard/base-types/common-type-system
Further read:
https://learn.microsoft.com/en-us/dotnet/api/system.threading.threadpool?view=net-6.0
async programmingFurther read:
https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/task-parallel-library-tpl
In short:
it will not work because it requires boxing and boxing will create new object for reference in lock every time code is executed so lock statement will not prevent anything.
Further read:
https://intellitect.com/blog/locking-a-block-of-code-with-an-integer/
lock statement blocks execution of a code block for single thread that hold locklock statements may lead to deadlockBelow code block is translated by compiler
lock (x)
{
    // Your code...
}
to:
object __lockObj = x;
bool __lockWasTaken = false;
try
{
    System.Threading.Monitor.Enter(__lockObj, ref __lockWasTaken);
    // Your code...
}
finally
{
    if (__lockWasTaken) System.Threading.Monitor.Exit(__lockObj);
}
Further read:
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/lock