Started learning anonymous types in C #.
The author gives an example of the syntax of an anonymous type var instance = new { Name = "Alex", Age = 27 }; and proposes sequentially - step by step to add additional syntax elements to this line so that the given lines become more recognizable “readable” for us (I remind you: the author does this because the example and the whole course is educational). turning the above string into
var instance = new MyClass() { Name = "Alex", Age = 27 }; saying that we added the default constructor name and parentheses for accepting constructor arguments, and immediately demonstrate that by adding this — the studio offers us to generate properties for Age and Name in the MyClass class (he created the class himself — again, for example, but said that in anonymous types, when generating properties, a class is also automatically created). In class generated autorealizable properties
But the author said that they should be read-only, i.e. in (well, in this case you need to remove set permanently - after all, the studio generated properties as for ordinary class fields when we added the default constructor name after the new keyword). And that brings me to question number 3 (questions number 1 and number 2 are presented below). If auto-generated, auto-implemented properties in a class that is also automatically created (let's call it MyClass ) are read-only, then how in the initializer block on the line var instance = new { Name = "Alex", Age = 27 }; we generally can assign values to these fields? Here is a screenshot of the first example in which I am interested in a comment, in which I have all these questions. 
Question number 1: i.e. does the compiler create a new name for an anonymous type each time, which in turn is a reference type?
Question number 2: i.e. an application cannot refer to a link (since the type is reference) to a new name created by the compiler.
Question number 3 is presented at the beginning.