###Классы и объекты ``` Person tom = new Person(); string personName = tom.name; int personAge = tom.age; Console.WriteLine($"name: {personName} age: {personAge}"); tom.name = "Tom"; tom.age = 37; tom.Print(); class Person { public string name = "Undefined"; public int age; public void Print() { Console.WriteLine($"Имя: {name} Возраст: {age}"); } } ``` ###Конструкторы, инициализаторы и деконструкторы ``` Person tom = new Person(); Person bob = new Person("Bob"); Person sam = new Person("Sam", 25); tom.Print(); bob.Print(); sam.Print(); class Person { public string name; public int age; public Person() { name = "Unknown"; age = 18; } public Person(string n) { name = n; age = 18; } public Person(string n, int a) { name = n; age = a; } public void Print() { Console.WriteLine($"name: {name} age: {age}"); } } ``` ``` Person sam = new Person("Sam", 25); sam.Print(); class Person { public string name; public int age; public Person() { name = "Unknown"; age = 18; } public Person(string name) { this.name = name; age = 18; } public Person(string name, int age) { this.name = name; this.age = age; } public void Print() { Console.WriteLine($"name: {name} age: {age}"); } } ``` ###Цепочка вызова конструкторов ``` Person sam = new Person("Sam", 25); sam.Print(); class Person { public string name; public int age; public Person() : this("Unknown") { } public Person(string name) : this(name, 18) { } public Person(string name, int age) { this.name = name; this.age = age; } public void Print() => Console.WriteLine($"Name: {name} Age: {age}"); } ``` ###Первичные конструкторы ``` var tom = new Person("Tom", 38); Console.WriteLine(tom); public class Person(string name, int age) { public Person(string name) : this(name, 18) { } public void Print() => Console.WriteLine($"name: {name}, age: {age}"); } ``` ###Инициализаторы объектов ``` Person tom = new Person { name = "Tom", company = { title = "Microsoft" } }; tom.Print(); class Person { public string name; public Company company; public Person() { name = "Undefinde"; company = new Company(); } public void Print() => Console.WriteLine($"name: {name} company: {company.title}"); } class Company { public string title = "Unknown"; } ``` ###Деконструкторы ``` Person person = new Person("Tom", 33); (string name, int age) = person; //(_, int age) = person если нужен только возраст Console.WriteLine(name); class Person { string name; int age; public Person(string name, int age) { this.name; this.age; } public void Deconstruct(out string personName, out int personAge) { personName = name; personAge = age; } } ``` ###Класс Program и метод Main. Программы верхнего уровня ``` string hello = "Hello"; Print(hello); void Print(string message) { Console.WriteLine(message); } Person tom = new(); tom.SayHello(); class Person { public void SayHello() => Console.WriteLine("Hello"); } ``` ###Структуры ``` struct Person { public string name; public int age; public void Print() { Console.WriteLine($"Name: {name} Age: {age}"); } } ``` ###Типы значений и ссылочные типы ###Область видимости переменных (контекст)