Instantiate fundamental types unity

I would like to clarify this: if I instantiate a fundamental class (or other classes) as “Quaternion”, in c sharp the instance is automatically created even without the “new” keyword?

For example if I write:

Quaternion x;

Unity automatically creates the object reference for me? Also, if it is true that it automatically creates the object of type Quaternion for me, is the object empty in this case?

If you try this within a method:

Quaternion x;
Debug.Log(x);

Visual Studio will raise an error and you cannot compile. The error is “CS0165: Use of unassigned local variable”.

However, if you define x at the class level as a Field, then Visual Studio won’t raise an error and the code compiles without problem. This time the Debug will print “(0.00000, 0.00000, 0.00000, 0.00000)”