C# Does this object initiation call its constructor?

private Object object1;

Does object1 call the default constructor of Object even though it haven't used = new Object(); ?

If not, is object1 NULL until it is initialized with new?

Jon Skeet
people
quotationmark

No, that field declaration just declares a field. It will have a default value of null.

From section 5.2 of the C# 5 specification:

The following categories of variables are automatically initialized to their default values:

  • Static variables.
  • Instance variables of class instances.
  • Array elements.

The default value of a variable depends on the type of the variable and is determined as follows:

  • For a variable of a value-type, the default value is the same as the value computed by the value-type's default constructor (ยง4.1.2).
  • For a variable of a reference-type, the default value is null.

Initialization to default values is typically done by having the memory manager or garbage collector initialize memory to all-bits-zero before it is allocated for use. For this reason, it is convenient to use all-bits-zero to represent the null reference.

If you want it to start off with a value other than null, you need to initialize it explicitly:

private Object object1 = new Object();

people

See more on this question at Stackoverflow