The CLR uses the new operator to create an object, for example:employee E=new Employee ("Param1"); Here's what the new operator does.
It calculates the number of bytes required for all instance fields defined in the type and all of its base types (until System.Object, although it does not define its own instance field). Each object on the heap requires some extra members-that is, the type object pointer and the sync block index. These members are used by the CLR to manage objects. The number of bytes for these extra members is counted into the object size.
It allocates the memory of the object by allocating the number of bytes required by the specified type from the managed heap, and all allocated bytes are set to 0 (0).
It initializes the object's "type Object pointer" and "synchronous Block index" members.
Invokes the instance constructor of the type, remembering any arguments passed in the call to new (The string "Param1"is the example above). Most compilers automatically generate code in the constructor to invoke a base class constructor. Each type of constructor, when called, is responsible for initializing the instance fields defined by this type. The final call is the System.Object Constructor, which simply returns and does nothing else. To prove this, you can use ILDasm.exe to load MSCorLib.dll and examine the constructor method of System.Object yourself.
When new executes all of these operations, it returns a reference (or pointer) to the new object. In the preceding example code, the reference is saved to the variable E, which has the Employee type.
Read Classics-CLR via C # (Jeffrey Richter) Notes _new new objects