From 058c8f26791b8f0692a6397c23b557a1389928dd Mon Sep 17 00:00:00 2001 From: Dvurechensky <46356631+Dvurechensky@users.noreply.github.com> Date: Sat, 5 Oct 2024 09:59:53 +0300 Subject: [PATCH] 1.0 Main --- .gitattributes | 63 ++ .gitignore | 261 ++++++++ Git/gitPreview.png | Bin 0 -> 130859 bytes LICENCE | 121 ++++ .../40_wf_Lesson - Оператор объединения с NULL.csproj | 12 + .../Contacts.cs | 8 + .../Form1.Designer.cs | 71 +++ .../Form1.cs | 35 ++ .../Form1.resx | 120 ++++ .../Person.cs | 21 + .../Program.cs | 17 + .../Benchmark/81_81B_84_Benchmark.csproj | 18 + .../Benchmark/MyParserBenchmark.cs | 47 ++ LessonsAndTasks/Benchmark/Program.cs | 222 +++++++ .../Lesson 1 - Первая программа.sln | 25 + .../01_Lesson - Первая программа.csproj | 54 ++ .../Lesson 1 - Первая программа/App.config | 6 + .../Lesson 1 - Первая программа/Program.cs | 15 + .../Lesson 1 - Первая программа/Properties/AssemblyInfo.cs | 36 ++ .../Lesson 10 - Несколько проектов в одном решении.sln | 31 + .../10_Lesson - Несколько проектов в одном решении.csproj | 54 ++ .../Lesson 10 - Несколько проектов в одном решении/App.config | 6 + .../Lesson 10 - Несколько проектов в одном решении/Program.cs | 14 + .../Properties/AssemblyInfo.cs | 36 ++ .../11_Lesson - Инкремент и декремент. Постфиксный и префиксный.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 24 + .../Properties/AssemblyInfo.cs | 36 ++ .../12_Lesson - Операторы сравнения. Операции сравнения.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 35 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../13_Lesson - Конструкция if else.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 46 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../14_Lesson - Сокращённые логические операции. Логические операторы.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 109 ++++ .../Properties/AssemblyInfo.cs | 36 ++ .../15_Lesson - Условный оператор множественного выбора switch.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 339 ++++++++++ .../Properties/AssemblyInfo.cs | 36 ++ .../16_Lesson - Цикл while.csproj | 53 ++ .../Lesson 16 - Цикл while/App.config | 6 + .../Lesson 16 - Цикл while/Program.cs | 19 + .../Properties/AssemblyInfo.cs | 36 ++ .../17_Lesson - Цикл do while.csproj | 53 ++ .../Lesson 17 - Цикл do while/App.config | 6 + .../Lesson 17 - Цикл do while/Program.cs | 25 + .../Properties/AssemblyInfo.cs | 36 ++ .../18_Lesson - Цикл for.csproj | 54 ++ .../Lesson 18 - Цикл for/App.config | 6 + .../Lesson 18 - Цикл for/Program.cs | 26 + .../Properties/AssemblyInfo.cs | 36 ++ .../19_Lesson - Цикл for в обратном порядке.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 69 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../Lesson 2 Типы Данных.sln | 25 + .../Lesson 2 Типы Данных/02_Lesson - Типы Данных.csproj | 54 ++ .../Lesson 2 Типы Данных/App.config | 6 + .../Lesson 2 Типы Данных/Program.cs | 58 ++ .../Lesson 2 Типы Данных/Properties/AssemblyInfo.cs | 36 ++ .../20_Lesson - Ключевое слово break (оператор).csproj | 54 ++ .../App.config | 6 + .../Program.cs | 23 + .../Properties/AssemblyInfo.cs | 36 ++ .../21_Lesson - Ключевое слово continue.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 18 + .../Properties/AssemblyInfo.cs | 36 ++ .../22_Lesson - Вложенные циклы. Как работают.csproj | 56 ++ .../App.config | 6 + .../Game.cs | 4 + .../GameInfo.cs | 15 + .../Program.cs | 207 +++++++ .../Properties/AssemblyInfo.cs | 36 ++ .../23_Lesson - Тернарный оператор. Что это. Пример.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 48 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../24_Lesson - Что такое массивы. Одномерный массив. Примеры.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 27 + .../Properties/AssemblyInfo.cs | 36 ++ .../25_Lesson - Инициализация массива. Способы.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 24 + .../Properties/AssemblyInfo.cs | 36 ++ .../26_Lesson - Вывод массива. Перебор массива. Массивы и циклы.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 66 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../27_Lesson - Как работать с массивами на самом деле.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 26 + .../Properties/AssemblyInfo.cs | 36 ++ .../28_Lesson - Индексы и диапазоны.csproj | 9 + .../Program.cs | 46 ++ .../29_Lesson - Многомерные массивы. Двумерный прямоугольный массив.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 21 + .../Properties/AssemblyInfo.cs | 36 ++ .../Lesson 3 - Переменные в языке.sln | 25 + .../03_Lesson - Переменные в языке.csproj | 54 ++ .../Lesson 3 - Переменные в языке/App.config | 6 + .../Lesson 3 - Переменные в языке/Program.cs | 50 ++ .../Lesson 3 - Переменные в языке/Properties/AssemblyInfo.cs | 36 ++ .../30_Lesson - Двумерный массив. Объявление. Инициализация. Индексы.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 29 + .../Properties/AssemblyInfo.cs | 36 ++ .../31_Lesson - Вывод двумерного массива.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 47 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../32_Lesson - Заполнение двумерного масива, случайными числами.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 72 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../33_Lesson - Ступенчатые (зубчатые) массивы.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 43 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../34_Lesson - Трехмерные массивы, многомерные массивы любой мерности.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 116 ++++ .../Properties/AssemblyInfo.cs | 36 ++ .../35_Lesson - Функции и методы, что это, примеры.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 84 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../36_Lesson - Перегрузка методов.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 36 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../37_Lesson - Область видимости, контекст переменной, конфликт областей.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 30 + .../Properties/AssemblyInfo.cs | 36 ++ .../38_Lesson - Ссылочные и значимые типы, стек и куча.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 56 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../39_Lesson - Что такое NULL.csproj | 53 ++ .../Lesson 39 - Что такое NULL/App.config | 6 + .../Lesson 39 - Что такое NULL/Program.cs | 39 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../Lesson 4 - Ввод данных в консоль.sln | 25 + .../04_Lesson - Ввод данных в консоль.csproj | 54 ++ .../Lesson 4 - Ввод данных в консоль/App.config | 6 + .../Lesson 4 - Ввод данных в консоль/Program.cs | 15 + .../Lesson 4 - Ввод данных в консоль/Properties/AssemblyInfo.cs | 36 ++ .../40_Lesson - Оператор объединения с NULL.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 15 + .../Properties/AssemblyInfo.cs | 36 ++ .../40_wf_Lesson - Оператор объекдинения с NUL.csproj | 85 +++ .../App.config | 6 + .../Contacts.cs | 5 + .../Form1.Designer.cs | 68 ++ .../Form1.cs | 33 + .../Form1.resx | 120 ++++ .../Person.cs | 18 + .../Program.cs | 16 + .../Properties/AssemblyInfo.cs | 35 ++ .../Properties/Resources.Designer.cs | 67 ++ .../Properties/Resources.resx | 117 ++++ .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + .../41_Lesson - Оператор присваивания объединения со значением NULL.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 16 + .../Properties/AssemblyInfo.cs | 36 ++ .../42_Lesson - Оператор условного NULL.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 23 + .../Properties/AssemblyInfo.cs | 36 ++ .../42_2_Lesson - Example 1 - Оператор условного NULL.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 36 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../43_Lesson - Ключевое слово ref, что это и предназначение.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 225 +++++++ .../Properties/AssemblyInfo.cs | 36 ++ .../44_Lesson - Ключевое слово out, разница out и ref.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 38 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../45_Lesson - Модификатор in, разница in ref и out.csproj | 56 ++ .../App.config | 6 + .../Program.cs | 83 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../46_Lesson - Ключевое слово params.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 66 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../47_Lesson - Необязательные параметры метода (параметры по умолчанию).csproj | 53 ++ .../App.config | 6 + .../Program.cs | 34 + .../Properties/AssemblyInfo.cs | 36 ++ .../48_Lesson - Именнованные параметры.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 41 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../49_Lesson - Что такое рекурсия, переполнение стека.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 151 +++++ .../Properties/AssemblyInfo.cs | 36 ++ .../Lesson 5 - конвертация строки, класс Convert.sln | 25 + .../05_Lesson - конвертация строки, класс Convert.csproj | 54 ++ .../Lesson 5 - конвертация строки, класс Convert/App.config | 6 + .../Lesson 5 - конвертация строки, класс Convert/Program.cs | 58 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../50_Lesson - Преобразование и приведение, явное и неявное.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 31 + .../Properties/AssemblyInfo.cs | 36 ++ .../51_Lesson - Арифметическое переполнение, checked unchecked.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 48 ++ .../Properties/AssemblyInfo.cs | 36 ++ ...sson - Что такое Nullable, Null совместимые значимые типы Nullable.csproj | 54 ++ .../App.config | 6 + .../ClassDiagram1.cd | 2 + .../Program.cs | 40 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../53_Lesson - var . Это не тип данных. Неявно типизированные переменные.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 71 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../54_Lesson - enum, что это, и для чего нужно - перечисления.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 105 ++++ .../Properties/AssemblyInfo.cs | 36 ++ .../55_Lesson - Что такое КЛАСС - ООП, объект, экземпляр класса.csproj | 55 ++ .../App.config | 6 + .../ClassDiagram1.cd | 39 ++ .../Program.cs | 88 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../Student.cs | 19 + .../56_Lesson - Методы и классы, ООП, вызов метода экземпляра класса.csproj | 56 ++ .../App.config | 6 + .../Car.cs | 34 + .../Program.cs | 48 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../Student.cs | 26 + ...son - Модификаторы доступа, public, protected, private.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 57 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../58_Lesson - ИНКАПСУЛЯЦИЯ, примеры.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 50 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../59_Lesson - Что такое конструктор класса, для чего, по умолчанию.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 86 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../Lesson 6 - Конвертация строки parse и tryparse.sln | 25 + .../06_Lesson - Конвертация строки parse и tryparse.csproj | 54 ++ .../Lesson 6 - Конвертация строки parse и tryparse/App.config | 6 + .../Lesson 6 - Конвертация строки parse и tryparse/Program.cs | 45 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../60_Lesson - Перегрузка конструкторов класса, что это.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 99 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../61_Lesson - Ключевое слово this, this в конструкторе.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 53 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../62_Lesson - Свойства get, set ключевое слово value, авто-свойства.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 24 + .../Properties/AssemblyInfo.cs | 36 ++ .../App.config | 6 + .../Lesson 62 - Свойства get, set, ключевое слово value.csproj | 53 ++ .../Program.cs | 89 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../63_Lesson - Статические поля класса, ключевое слово static.csproj | 53 ++ .../App.config | 6 + .../ClassDiagram1.cd | 2 + .../Program.cs | 41 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../64_Lesson - Статические методы, свойства, работа static.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 81 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../65_Lesson - Статический конструктор, как работает ключ. слово static.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 65 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../66_Lesson - Статический класс.csproj | 53 ++ .../Lesson 66 - Статический класс/App.config | 6 + .../Lesson 66 - Статический класс/Program.cs | 20 + .../Properties/AssemblyInfo.cs | 36 ++ .../67_Lesson - Методы расширения, extension.csproj | 55 ++ .../App.config | 6 + .../MyExtensions.cs | 23 + .../Program.cs | 19 + .../Properties/AssemblyInfo.cs | 36 ++ .../Student.cs | 11 + .../68_Lesson - partial класс, частичные типы, partial методы.csproj | 55 ++ .../App.config | 6 + .../Person.cs | 11 + .../PersonMethods.cs | 12 + .../Program.cs | 20 + .../Properties/AssemblyInfo.cs | 36 ++ ...nst vs readonly - разница между ними(const и static).csproj | 9 + .../Program.cs | 122 ++++ .../Lesson 7 - Что делать если закрывается консоль.sln | 25 + .../07_Lesson - Что делать если закрывается консоль.csproj | 54 ++ .../Lesson 7 - Что делать если закрывается консоль/App.config | 6 + .../Lesson 7 - Что делать если закрывается консоль/Program.cs | 13 + .../Properties/AssemblyInfo.cs | 36 ++ .../70_Lesson - синтаксис инициализации объектов класса.csproj | 9 + .../Address.cs | 6 + .../Person.cs | 10 + .../Program.cs | 59 ++ .../71_Lesson - НАСЛЕДОВАНИЕ.csproj | 9 + .../Lesson 71 - НАСЛЕДОВАНИЕ/ClassDiagram1.cd | 39 ++ .../Lesson 71 - НАСЛЕДОВАНИЕ/Empoloyee.cs | 4 + .../Lesson 71 - НАСЛЕДОВАНИЕ/LP.cs | 12 + .../Lesson 71 - НАСЛЕДОВАНИЕ/Program.cs | 82 +++ .../Lesson 71 - НАСЛЕДОВАНИЕ/Security.cs | 6 + .../Lesson 71 - НАСЛЕДОВАНИЕ/Student.cs | 6 + .../Lesson 71 - НАСЛЕДОВАНИЕ/Teacher.cs | 6 + .../72_Lesson - Ключевое слово base, наследование и конструктор класса.csproj | 9 + .../Program.cs | 59 ++ .../73_Lesson - Операторы as is, наследование и приведение типов.csproj | 9 + .../Program.cs | 55 ++ .../74_Lesson - protected - модификатор доступа.csproj | 9 + .../Program.cs | 69 +++ .../75_Lesson - ПОЛИМОРФИЗМ, виртуальные методы, virtual override.csproj | 9 + .../Program.cs | 60 ++ .../76_Lesson - Абстрактные классы, abstract.csproj | 9 + .../Program.cs | 108 ++++ .../77_Lesson - Интерфейсы, зачем нужны и как используются, interface.csproj | 9 + .../Program.cs | 64 ++ .../78_Lesson - Наследование интерфейсов, множественное наследование.csproj | 9 + .../Program.cs | 82 +++ .../79_Lesson - Интерфейсы - Явная реализация.csproj | 9 + .../Program.cs | 74 +++ .../Lesson 8 - Арифметические операции с числами.sln | 25 + .../08_Lesson - Арифметические операции с числами.csproj | 54 ++ .../Lesson 8 - Арифметические операции с числами/App.config | 6 + .../Lesson 8 - Арифметические операции с числами/Program.cs | 35 ++ .../Lesson 8 - Арифметические операции с числами/Properties/AssemblyInfo.cs | 36 ++ .../80_Lesson - Реализация интерфейса по умолчанию.csproj | 9 + .../ConsoleLogger.cs | 26 + .../Extensions.cs | 10 + .../ILogger.cs | 16 + .../LogLevel.cs | 8 + .../Program.cs | 19 + .../81_Lesson - Структуры и классы - отличия, struct vs class.csproj | 9 + .../Program.cs | 104 ++++ .../81_B_Lesson - Benchmark DotNet.csproj | 9 + .../MyParser.cs | 31 + .../Lesson 81_B - Benchmark DotNet/Program.cs | 6 + ...n - boxing and unboxing. Упаковка и распаковка значимых(value)типов.csproj | 9 + .../Program.cs | 33 + .../83_Lesson - Обобщения, generic типы, методы и классы.csproj | 9 + .../MyList.cs | 22 + .../Program.cs | 76 +++ .../84_Lesson - Обобщения - производительность, коллекции.csproj | 9 + .../Program.cs | 9 + .../SwapTestClass.cs | 16 + .../Lesson 9 - Приоритет арифметических операций.sln | 25 + .../09_Lesson - Приоритет арифметических операций.csproj | 54 ++ .../Lesson 9 - Приоритет арифметических операций/App.config | 6 + .../Lesson 9 - Приоритет арифметических операций/Program.cs | 17 + .../Lesson 9 - Приоритет арифметических операций/Properties/AssemblyInfo.cs | 36 ++ LessonsAndTasks/Lessons.sln | 583 ++++++++++++++++++ .../08_Task Home 1 - Среднее арифметическое двух чисел.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 28 + .../Properties/AssemblyInfo.cs | 36 ++ .../Program.cs | 38 ++ .../Task Home 2 - Введите три числа и выведите их произведение и сумму.csproj | 9 + .../08_Task Home 2 - Введите три числа и выведите их произведение и суммы.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 31 + .../Properties/AssemblyInfo.cs | 36 ++ .../Task Home 3 - Конвертер валют/Program.cs | 28 + .../Task Home 3 - Конвертер валют.csproj | 9 + .../08_Task Home 3 - Конвертер валюты.csproj | 54 ++ .../Task Home 3 - Конвертер валюты/App.config | 6 + .../Task Home 3 - Конвертер валюты/Program.cs | 23 + .../Properties/AssemblyInfo.cs | 36 ++ .../App.config | 6 + .../Program.cs | 21 + .../Properties/AssemblyInfo.cs | 36 ++ .../Task Home 4 - Проверка числа на чётность.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 97 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../Task Home 5 - Калькулятор Switch и на If Else.csproj | 54 ++ .../App.config | 6 + .../Program.cs | 93 +++ .../Properties/AssemblyInfo.cs | 36 ++ .../Task Home 6 - Как нарисовать треугольник в консоли.csproj | 53 ++ .../App.config | 6 + .../Program.cs | 38 ++ .../Properties/AssemblyInfo.cs | 36 ++ .../Task Home 6 - Сумма чётных и нечётных чисел в диапазоне.csproj | 53 ++ README.md | 75 +++ 410 files changed, 15807 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Git/gitPreview.png create mode 100644 LICENCE create mode 100644 LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/40_wf_Lesson - Оператор объединения с NULL.csproj create mode 100644 LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Contacts.cs create mode 100644 LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.Designer.cs create mode 100644 LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.cs create mode 100644 LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.resx create mode 100644 LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Person.cs create mode 100644 LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Program.cs create mode 100644 LessonsAndTasks/Benchmark/81_81B_84_Benchmark.csproj create mode 100644 LessonsAndTasks/Benchmark/MyParserBenchmark.cs create mode 100644 LessonsAndTasks/Benchmark/Program.cs create mode 100644 LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа.sln create mode 100644 LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/01_Lesson - Первая программа.csproj create mode 100644 LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/App.config create mode 100644 LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/Program.cs create mode 100644 LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении.sln create mode 100644 LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/10_Lesson - Несколько проектов в одном решении.csproj create mode 100644 LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/App.config create mode 100644 LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/Program.cs create mode 100644 LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/11_Lesson - Инкремент и декремент. Постфиксный и префиксный.csproj create mode 100644 LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/App.config create mode 100644 LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/Program.cs create mode 100644 LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/12_Lesson - Операторы сравнения. Операции сравнения.csproj create mode 100644 LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/App.config create mode 100644 LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/Program.cs create mode 100644 LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 13 - Конструкция if else/13_Lesson - Конструкция if else.csproj create mode 100644 LessonsAndTasks/Lesson 13 - Конструкция if else/App.config create mode 100644 LessonsAndTasks/Lesson 13 - Конструкция if else/Program.cs create mode 100644 LessonsAndTasks/Lesson 13 - Конструкция if else/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/14_Lesson - Сокращённые логические операции. Логические операторы.csproj create mode 100644 LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/App.config create mode 100644 LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/Program.cs create mode 100644 LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/15_Lesson - Условный оператор множественного выбора switch.csproj create mode 100644 LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/App.config create mode 100644 LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/Program.cs create mode 100644 LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 16 - Цикл while/16_Lesson - Цикл while.csproj create mode 100644 LessonsAndTasks/Lesson 16 - Цикл while/App.config create mode 100644 LessonsAndTasks/Lesson 16 - Цикл while/Program.cs create mode 100644 LessonsAndTasks/Lesson 16 - Цикл while/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 17 - Цикл do while/17_Lesson - Цикл do while.csproj create mode 100644 LessonsAndTasks/Lesson 17 - Цикл do while/App.config create mode 100644 LessonsAndTasks/Lesson 17 - Цикл do while/Program.cs create mode 100644 LessonsAndTasks/Lesson 17 - Цикл do while/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 18 - Цикл for/18_Lesson - Цикл for.csproj create mode 100644 LessonsAndTasks/Lesson 18 - Цикл for/App.config create mode 100644 LessonsAndTasks/Lesson 18 - Цикл for/Program.cs create mode 100644 LessonsAndTasks/Lesson 18 - Цикл for/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/19_Lesson - Цикл for в обратном порядке.csproj create mode 100644 LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/App.config create mode 100644 LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/Program.cs create mode 100644 LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных.sln create mode 100644 LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/02_Lesson - Типы Данных.csproj create mode 100644 LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/App.config create mode 100644 LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/Program.cs create mode 100644 LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/20_Lesson - Ключевое слово break (оператор).csproj create mode 100644 LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/App.config create mode 100644 LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/Program.cs create mode 100644 LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 21 - Ключевое слово continue/21_Lesson - Ключевое слово continue.csproj create mode 100644 LessonsAndTasks/Lesson 21 - Ключевое слово continue/App.config create mode 100644 LessonsAndTasks/Lesson 21 - Ключевое слово continue/Program.cs create mode 100644 LessonsAndTasks/Lesson 21 - Ключевое слово continue/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/22_Lesson - Вложенные циклы. Как работают.csproj create mode 100644 LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/App.config create mode 100644 LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Game.cs create mode 100644 LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/GameInfo.cs create mode 100644 LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Program.cs create mode 100644 LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/23_Lesson - Тернарный оператор. Что это. Пример.csproj create mode 100644 LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/App.config create mode 100644 LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/Program.cs create mode 100644 LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/24_Lesson - Что такое массивы. Одномерный массив. Примеры.csproj create mode 100644 LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/App.config create mode 100644 LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/Program.cs create mode 100644 LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/25_Lesson - Инициализация массива. Способы.csproj create mode 100644 LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/App.config create mode 100644 LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/Program.cs create mode 100644 LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/26_Lesson - Вывод массива. Перебор массива. Массивы и циклы.csproj create mode 100644 LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/App.config create mode 100644 LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/Program.cs create mode 100644 LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/27_Lesson - Как работать с массивами на самом деле.csproj create mode 100644 LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/App.config create mode 100644 LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/Program.cs create mode 100644 LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 28 - Индексы и диапазоны/28_Lesson - Индексы и диапазоны.csproj create mode 100644 LessonsAndTasks/Lesson 28 - Индексы и диапазоны/Program.cs create mode 100644 LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/29_Lesson - Многомерные массивы. Двумерный прямоугольный массив.csproj create mode 100644 LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/App.config create mode 100644 LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/Program.cs create mode 100644 LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке.sln create mode 100644 LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/03_Lesson - Переменные в языке.csproj create mode 100644 LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/App.config create mode 100644 LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/Program.cs create mode 100644 LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/30_Lesson - Двумерный массив. Объявление. Инициализация. Индексы.csproj create mode 100644 LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/App.config create mode 100644 LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/Program.cs create mode 100644 LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 31 - Вывод двумерного массива/31_Lesson - Вывод двумерного массива.csproj create mode 100644 LessonsAndTasks/Lesson 31 - Вывод двумерного массива/App.config create mode 100644 LessonsAndTasks/Lesson 31 - Вывод двумерного массива/Program.cs create mode 100644 LessonsAndTasks/Lesson 31 - Вывод двумерного массива/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/32_Lesson - Заполнение двумерного масива, случайными числами.csproj create mode 100644 LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/App.config create mode 100644 LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/Program.cs create mode 100644 LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/33_Lesson - Ступенчатые (зубчатые) массивы.csproj create mode 100644 LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/App.config create mode 100644 LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/Program.cs create mode 100644 LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/34_Lesson - Трехмерные массивы, многомерные массивы любой мерности.csproj create mode 100644 LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/App.config create mode 100644 LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/Program.cs create mode 100644 LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/35_Lesson - Функции и методы, что это, примеры.csproj create mode 100644 LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/App.config create mode 100644 LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/Program.cs create mode 100644 LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 36 - Перегрузка методов/36_Lesson - Перегрузка методов.csproj create mode 100644 LessonsAndTasks/Lesson 36 - Перегрузка методов/App.config create mode 100644 LessonsAndTasks/Lesson 36 - Перегрузка методов/Program.cs create mode 100644 LessonsAndTasks/Lesson 36 - Перегрузка методов/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/37_Lesson - Область видимости, контекст переменной, конфликт областей.csproj create mode 100644 LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/App.config create mode 100644 LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/Program.cs create mode 100644 LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/38_Lesson - Ссылочные и значимые типы, стек и куча.csproj create mode 100644 LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/App.config create mode 100644 LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/Program.cs create mode 100644 LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 39 - Что такое NULL/39_Lesson - Что такое NULL.csproj create mode 100644 LessonsAndTasks/Lesson 39 - Что такое NULL/App.config create mode 100644 LessonsAndTasks/Lesson 39 - Что такое NULL/Program.cs create mode 100644 LessonsAndTasks/Lesson 39 - Что такое NULL/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль.sln create mode 100644 LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/04_Lesson - Ввод данных в консоль.csproj create mode 100644 LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/App.config create mode 100644 LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/Program.cs create mode 100644 LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/40_Lesson - Оператор объединения с NULL.csproj create mode 100644 LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/App.config create mode 100644 LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/Program.cs create mode 100644 LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/40_wf_Lesson - Оператор объекдинения с NUL.csproj create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/App.config create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Contacts.cs create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.Designer.cs create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.cs create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.resx create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Person.cs create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Program.cs create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Resources.Designer.cs create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Resources.resx create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Settings.Designer.cs create mode 100644 LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Settings.settings create mode 100644 LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/41_Lesson - Оператор присваивания объединения со значением NULL.csproj create mode 100644 LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/App.config create mode 100644 LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/Program.cs create mode 100644 LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 42 - Оператор условного NULL/42_Lesson - Оператор условного NULL.csproj create mode 100644 LessonsAndTasks/Lesson 42 - Оператор условного NULL/App.config create mode 100644 LessonsAndTasks/Lesson 42 - Оператор условного NULL/Program.cs create mode 100644 LessonsAndTasks/Lesson 42 - Оператор условного NULL/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/42_2_Lesson - Example 1 - Оператор условного NULL.csproj create mode 100644 LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/App.config create mode 100644 LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/Program.cs create mode 100644 LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/43_Lesson - Ключевое слово ref, что это и предназначение.csproj create mode 100644 LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/App.config create mode 100644 LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/Program.cs create mode 100644 LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/44_Lesson - Ключевое слово out, разница out и ref.csproj create mode 100644 LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/App.config create mode 100644 LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/Program.cs create mode 100644 LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/45_Lesson - Модификатор in, разница in ref и out.csproj create mode 100644 LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/App.config create mode 100644 LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/Program.cs create mode 100644 LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 46 - Ключевое слово params/46_Lesson - Ключевое слово params.csproj create mode 100644 LessonsAndTasks/Lesson 46 - Ключевое слово params/App.config create mode 100644 LessonsAndTasks/Lesson 46 - Ключевое слово params/Program.cs create mode 100644 LessonsAndTasks/Lesson 46 - Ключевое слово params/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/47_Lesson - Необязательные параметры метода (параметры по умолчанию).csproj create mode 100644 LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/App.config create mode 100644 LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/Program.cs create mode 100644 LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 48 - Именнованные параметры/48_Lesson - Именнованные параметры.csproj create mode 100644 LessonsAndTasks/Lesson 48 - Именнованные параметры/App.config create mode 100644 LessonsAndTasks/Lesson 48 - Именнованные параметры/Program.cs create mode 100644 LessonsAndTasks/Lesson 48 - Именнованные параметры/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/49_Lesson - Что такое рекурсия, переполнение стека.csproj create mode 100644 LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/App.config create mode 100644 LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/Program.cs create mode 100644 LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert.sln create mode 100644 LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/05_Lesson - конвертация строки, класс Convert.csproj create mode 100644 LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/App.config create mode 100644 LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/Program.cs create mode 100644 LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/50_Lesson - Преобразование и приведение, явное и неявное.csproj create mode 100644 LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/App.config create mode 100644 LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/Program.cs create mode 100644 LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/51_Lesson - Арифметическое переполнение, checked unchecked.csproj create mode 100644 LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/App.config create mode 100644 LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/Program.cs create mode 100644 LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/52_Lesson - Что такое Nullable, Null совместимые значимые типы Nullable.csproj create mode 100644 LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/App.config create mode 100644 LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/ClassDiagram1.cd create mode 100644 LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/Program.cs create mode 100644 LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/53_Lesson - var . Это не тип данных. Неявно типизированные переменные.csproj create mode 100644 LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/App.config create mode 100644 LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/Program.cs create mode 100644 LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/54_Lesson - enum, что это, и для чего нужно - перечисления.csproj create mode 100644 LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/App.config create mode 100644 LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/Program.cs create mode 100644 LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/55_Lesson - Что такое КЛАСС - ООП, объект, экземпляр класса.csproj create mode 100644 LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/App.config create mode 100644 LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/ClassDiagram1.cd create mode 100644 LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Program.cs create mode 100644 LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Student.cs create mode 100644 LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/56_Lesson - Методы и классы, ООП, вызов метода экземпляра класса.csproj create mode 100644 LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/App.config create mode 100644 LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Car.cs create mode 100644 LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Program.cs create mode 100644 LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Student.cs create mode 100644 LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/57_Lesson - Модификаторы доступа, public, protected, private.csproj create mode 100644 LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/App.config create mode 100644 LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/Program.cs create mode 100644 LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/58_Lesson - ИНКАПСУЛЯЦИЯ, примеры.csproj create mode 100644 LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/App.config create mode 100644 LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/Program.cs create mode 100644 LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/59_Lesson - Что такое конструктор класса, для чего, по умолчанию.csproj create mode 100644 LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/App.config create mode 100644 LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/Program.cs create mode 100644 LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse.sln create mode 100644 LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/06_Lesson - Конвертация строки parse и tryparse.csproj create mode 100644 LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/App.config create mode 100644 LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/Program.cs create mode 100644 LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/60_Lesson - Перегрузка конструкторов класса, что это.csproj create mode 100644 LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/App.config create mode 100644 LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/Program.cs create mode 100644 LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/61_Lesson - Ключевое слово this, this в конструкторе.csproj create mode 100644 LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/App.config create mode 100644 LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/Program.cs create mode 100644 LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/62_Lesson - Свойства get, set ключевое слово value, авто-свойства.csproj create mode 100644 LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/App.config create mode 100644 LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/Program.cs create mode 100644 LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/App.config create mode 100644 LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Lesson 62 - Свойства get, set, ключевое слово value.csproj create mode 100644 LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Program.cs create mode 100644 LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/63_Lesson - Статические поля класса, ключевое слово static.csproj create mode 100644 LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/App.config create mode 100644 LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/ClassDiagram1.cd create mode 100644 LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/Program.cs create mode 100644 LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/64_Lesson - Статические методы, свойства, работа static.csproj create mode 100644 LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/App.config create mode 100644 LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/Program.cs create mode 100644 LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/65_Lesson - Статический конструктор, как работает ключ. слово static.csproj create mode 100644 LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/App.config create mode 100644 LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/Program.cs create mode 100644 LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 66 - Статический класс/66_Lesson - Статический класс.csproj create mode 100644 LessonsAndTasks/Lesson 66 - Статический класс/App.config create mode 100644 LessonsAndTasks/Lesson 66 - Статический класс/Program.cs create mode 100644 LessonsAndTasks/Lesson 66 - Статический класс/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 67 - Методы расширения, extension/67_Lesson - Методы расширения, extension.csproj create mode 100644 LessonsAndTasks/Lesson 67 - Методы расширения, extension/App.config create mode 100644 LessonsAndTasks/Lesson 67 - Методы расширения, extension/MyExtensions.cs create mode 100644 LessonsAndTasks/Lesson 67 - Методы расширения, extension/Program.cs create mode 100644 LessonsAndTasks/Lesson 67 - Методы расширения, extension/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 67 - Методы расширения, extension/Student.cs create mode 100644 LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/68_Lesson - partial класс, частичные типы, partial методы.csproj create mode 100644 LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/App.config create mode 100644 LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Person.cs create mode 100644 LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/PersonMethods.cs create mode 100644 LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Program.cs create mode 100644 LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 69 - const vs readonly - разница между ними(const и static)/69_Lesson - const vs readonly - разница между ними(const и static).csproj create mode 100644 LessonsAndTasks/Lesson 69 - const vs readonly - разница между ними(const и static)/Program.cs create mode 100644 LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль.sln create mode 100644 LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/07_Lesson - Что делать если закрывается консоль.csproj create mode 100644 LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/App.config create mode 100644 LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/Program.cs create mode 100644 LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/70_Lesson - синтаксис инициализации объектов класса.csproj create mode 100644 LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Address.cs create mode 100644 LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Person.cs create mode 100644 LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Program.cs create mode 100644 LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/71_Lesson - НАСЛЕДОВАНИЕ.csproj create mode 100644 LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/ClassDiagram1.cd create mode 100644 LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Empoloyee.cs create mode 100644 LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/LP.cs create mode 100644 LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Program.cs create mode 100644 LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Security.cs create mode 100644 LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Student.cs create mode 100644 LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Teacher.cs create mode 100644 LessonsAndTasks/Lesson 72 - Ключевое слово base, наследование и конструктор класса/72_Lesson - Ключевое слово base, наследование и конструктор класса.csproj create mode 100644 LessonsAndTasks/Lesson 72 - Ключевое слово base, наследование и конструктор класса/Program.cs create mode 100644 LessonsAndTasks/Lesson 73 - Операторы as is, наследование и приведение типов/73_Lesson - Операторы as is, наследование и приведение типов.csproj create mode 100644 LessonsAndTasks/Lesson 73 - Операторы as is, наследование и приведение типов/Program.cs create mode 100644 LessonsAndTasks/Lesson 74 - protected - модификатор доступа/74_Lesson - protected - модификатор доступа.csproj create mode 100644 LessonsAndTasks/Lesson 74 - protected - модификатор доступа/Program.cs create mode 100644 LessonsAndTasks/Lesson 75 - ПОЛИМОРФИЗМ, виртуальные методы, virtual override/75_Lesson - ПОЛИМОРФИЗМ, виртуальные методы, virtual override.csproj create mode 100644 LessonsAndTasks/Lesson 75 - ПОЛИМОРФИЗМ, виртуальные методы, virtual override/Program.cs create mode 100644 LessonsAndTasks/Lesson 76 - Абстрактные классы, abstract/76_Lesson - Абстрактные классы, abstract.csproj create mode 100644 LessonsAndTasks/Lesson 76 - Абстрактные классы, abstract/Program.cs create mode 100644 LessonsAndTasks/Lesson 77 - Интерфейсы, зачем нужны и как используются, interface/77_Lesson - Интерфейсы, зачем нужны и как используются, interface.csproj create mode 100644 LessonsAndTasks/Lesson 77 - Интерфейсы, зачем нужны и как используются, interface/Program.cs create mode 100644 LessonsAndTasks/Lesson 78 - Наследование интерфейсов, множественное наследование/78_Lesson - Наследование интерфейсов, множественное наследование.csproj create mode 100644 LessonsAndTasks/Lesson 78 - Наследование интерфейсов, множественное наследование/Program.cs create mode 100644 LessonsAndTasks/Lesson 79 - Интерфейсы - Явная реализация/79_Lesson - Интерфейсы - Явная реализация.csproj create mode 100644 LessonsAndTasks/Lesson 79 - Интерфейсы - Явная реализация/Program.cs create mode 100644 LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами.sln create mode 100644 LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/08_Lesson - Арифметические операции с числами.csproj create mode 100644 LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/App.config create mode 100644 LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/Program.cs create mode 100644 LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/80_Lesson - Реализация интерфейса по умолчанию.csproj create mode 100644 LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/ConsoleLogger.cs create mode 100644 LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/Extensions.cs create mode 100644 LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/ILogger.cs create mode 100644 LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/LogLevel.cs create mode 100644 LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/Program.cs create mode 100644 LessonsAndTasks/Lesson 81 - Структуры и классы - отличия, struct vs class/81_Lesson - Структуры и классы - отличия, struct vs class.csproj create mode 100644 LessonsAndTasks/Lesson 81 - Структуры и классы - отличия, struct vs class/Program.cs create mode 100644 LessonsAndTasks/Lesson 81_B - Benchmark DotNet/81_B_Lesson - Benchmark DotNet.csproj create mode 100644 LessonsAndTasks/Lesson 81_B - Benchmark DotNet/MyParser.cs create mode 100644 LessonsAndTasks/Lesson 81_B - Benchmark DotNet/Program.cs create mode 100644 LessonsAndTasks/Lesson 82 - boxing and unboxing. Упаковка и распаковка значимых(value)типов/82_Lesson - boxing and unboxing. Упаковка и распаковка значимых(value)типов.csproj create mode 100644 LessonsAndTasks/Lesson 82 - boxing and unboxing. Упаковка и распаковка значимых(value)типов/Program.cs create mode 100644 LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/83_Lesson - Обобщения, generic типы, методы и классы.csproj create mode 100644 LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/MyList.cs create mode 100644 LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/Program.cs create mode 100644 LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/84_Lesson - Обобщения - производительность, коллекции.csproj create mode 100644 LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/Program.cs create mode 100644 LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/SwapTestClass.cs create mode 100644 LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций.sln create mode 100644 LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/09_Lesson - Приоритет арифметических операций.csproj create mode 100644 LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/App.config create mode 100644 LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/Program.cs create mode 100644 LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Lessons.sln create mode 100644 LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/08_Task Home 1 - Среднее арифметическое двух чисел.csproj create mode 100644 LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/App.config create mode 100644 LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/Program.cs create mode 100644 LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и сумму/Program.cs create mode 100644 LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и сумму/Task Home 2 - Введите три числа и выведите их произведение и сумму.csproj create mode 100644 LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/08_Task Home 2 - Введите три числа и выведите их произведение и суммы.csproj create mode 100644 LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/App.config create mode 100644 LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/Program.cs create mode 100644 LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Task Home 3 - Конвертер валют/Program.cs create mode 100644 LessonsAndTasks/Task Home 3 - Конвертер валют/Task Home 3 - Конвертер валют.csproj create mode 100644 LessonsAndTasks/Task Home 3 - Конвертер валюты/08_Task Home 3 - Конвертер валюты.csproj create mode 100644 LessonsAndTasks/Task Home 3 - Конвертер валюты/App.config create mode 100644 LessonsAndTasks/Task Home 3 - Конвертер валюты/Program.cs create mode 100644 LessonsAndTasks/Task Home 3 - Конвертер валюты/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Task Home 4 - Проверка числа на чётность/App.config create mode 100644 LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Program.cs create mode 100644 LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Task Home 4 - Проверка числа на чётность.csproj create mode 100644 LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/App.config create mode 100644 LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Program.cs create mode 100644 LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Task Home 5 - Калькулятор Switch и на If Else.csproj create mode 100644 LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/App.config create mode 100644 LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Program.cs create mode 100644 LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Task Home 6 - Как нарисовать треугольник в консоли.csproj create mode 100644 LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/App.config create mode 100644 LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Program.cs create mode 100644 LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Properties/AssemblyInfo.cs create mode 100644 LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне.csproj create mode 100644 README.md diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c4efe2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,261 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +project.fragment.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +#*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc \ No newline at end of file diff --git a/Git/gitPreview.png b/Git/gitPreview.png new file mode 100644 index 0000000000000000000000000000000000000000..d80c0f679b5361099ce2632c757f00ab738e73dc GIT binary patch literal 130859 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

onhFRVI%*H zx}I`Alxzev8_9VWL zHpfJmp|Zh*GL1do(uehS0>2C5VZ>0HK0VXJNQHKw*ibrVW4CtZ44Q#;Oh@cFmPQP{ z(okrEpQzDpchU=!*oIUB4HZL=cN~LO0$C>Xsi;J;QJ^Gq&hns@36sv7-IpRfL7&Yo zTJ4N76w2+Gx<$)xifNVEvqGgnDMN#bVV#kqsEPu+&1Qovi4r!djEW&joKJ~V;qd2Y z%oJ;760|T+57DbidTv8*)RbgOm@zpU+$Km*1Vi6#wB(cm9We~6j8UMh3>6iHHk6g3 z6pg8R%v3WJrgZfW0okq4?6#>ZV59U<#RMa&#S~p;q(Dr`urZ)Cx-vXbJV{sTLQ@I+ znI3D^5W{+iLWI5;`cl%N%S6?qtxNuP+savEpu%e1olG9gwudpC`tko@WOS4te*K&D z@j|{G$2a`o3f^?W@c_L1@YnLIuU$qDtC{uCL^~kWS5}MNmx{;Ntl=Zap2!zI`Z3=9 z@8@y2JGukl=o5~o0zUe$XIY@+Gz~S4rdR-vn~zH1v44G`!f zpenoas<=u(a?6cVf9`Ama3)zt-0#}LoYe7?AO8ev?z@jGuf2xR(NT^+;RJ5F@kV}h z)ingSlUniO%i(HEY&z{Bg%|)wS0$Iy%aJ`|ZcqzxO>(c-wJ-PS$so zu#Wl&qySqkT11t$Ka?dw2=T%wNuB1BiBpj2`(yR$HQavt?W|a_f|tE)e|Fz}w-8nK zu)_}Jw%cxF&6@iW5mv5T$7abl6`^yBanQyH2&Gx*yyZx9(?ejaL=FrnAY2V zkEWeZKKVq=|8eko)vFHW#v5-6c?<%e2qcBgn>YK~)Ie<1w$(vlymVA(B>j^HJOT^+ z4nFvxP@lRqmk92)vh8N62abU zK|`RLK{3OP@l?y1k<2-%%kYwv<$q~ZsJkL6tNibD#3=~DcZ`#jd@!LZ0Z`)7`N*q6 zjHi$}nj{W^p>!YoC-k}4-=dttz;&9H*K8i%RM+=k7TP4C{mPY@V~?)0!TBmH`zYlC z{TQ@YSm3Qay}xW+BT@{83Oy6rp4P?okFmjj+%|%L?)_YiQed2=tGIghDo_|I+iLJ1LxzzGhAZLq-JIR@ zeCvc+O#yxD8@Qo@<_K)c;HeJi9<&68jXe%!8wCqM76@#QJ*KTIY_pS~REwh8Xv@?& zl_{ZAe0{jfhEB$RefB|)*zNbUPcdw{RnAVsEk<~XlKWBRT1K1qvF`=TSo?#=SoQCp z;IRkSvbfdc+?VggnRl*+O;+gm!FO-uEB|#eKmFPJvEEr3tM9LXQGU1j9`3sLZd%Gt z1Kl!`4kU!dt@qij3AkS?iw~3tSPMaGEA>g1Vft+ z&nV5L%E`(2RU_vq8a$lmJkrt_t!Rp-B{tk|kSB5w$uJlS3d(UCxiW6C*)g-YvcWkf zstQG9mUZ6+zX(OatQ2cTD;T=Q0+h@#dgXl4tf^|r2o%Uhg@p^T^}qo;Nd;oD^URuw7(CDv5oSz9qwLeIDhdNSEO-XL zg=&M_2&38pM-zCB^*1#}QB?q%8KUF7)ndj4PTZ!KMlp?H!tG0H!G+(p6t2WB5`|Rs zrAL>NTq&B^Gf1b(9>YpgilS4M$F{HvH!0@DpZUA*%EmPhFl71+soa8Ht>`J}J0IAd5-P{*pI-AI=fCYFe)*%H z@R845#8ys7e&yk>w;D(hq;SXR~x^yX(n9!G=xRMAr!CEI3 z6dk|!n<`;jI%xFVfJtOED_D8ItVoah?z@j$Z@z`kUi4YczuMO6p3iQ!(NnBf$c4DP52^oZW^X7&2{rbimBcB<#lv4cecfV)FiWTlm z&6D`hht6S-J(jUz#R|?iw?uHq@gIP<&dYY!JixkrlJskOGUfYuC;y$LE!5WCqI`yygO&N<|;g2OoS8u=Ts~ z#v4PLU3XnNN50nA(&w@5w%el=EL*k*fBV~CfI;o-?7AesYIS?yfd^`7A~^DMD84+~ zq;`<5!pA=Lao+vzch`XM2R`rt2Q-}=8Rk{gY{z^C$C;`<7g2ot;~(SWAOCoA4{p2d zR#vQ7!N2^=TW5`@si{fY?KazNvu%wgG1yZqH_U^C_H%7cL>k1rB3&ar;@F8Ie^lV8 zfcT!J4+AAs?9Cc?D`(_G_;^T1{~6EO#2pUiM+_mQC_?2yV%w%_3*dlL}2Nu zZd)E?KyfMkdWP*pUnj6uT3V^#PN`7ner4!YLeIDekRtR&(KSN161tV4ZwLZ#&p;v8 z#H}aLH-?@Oy2gI*i`aXW{obpDekGI!N@EW&FN{$5v{=~E7emk3sF|h9vp`Weld=LE z+P=h|r`8i&zn-g?|K4{RqCWO_QQ0~a6%-XN0;P>ETL_p+Y+Xx3uY`Uj^aZ!eFSbr% z+us#q+bmXC>x(VB5a=04J7eGLitw~DY(|(6$g&}R-x}ih5jbR|;M9iU0eYY-o8i=? zJ>RhlNDsE^!}CgbfxuqC^Fh4?)UMcLP)Zo@wAfV*g=te6>u*a1^D52djTv@AbNQ*a zG5VUXvgZSTWrQ1ndnwr(l`p2^QG{Qy&0AJ+$PqX2-DM5dbt}%$eXiSo=aBcezjF`G ztk35@cA77Ze|pY1u-uxU0zDD-+N;TF$L4(V>pu?fesG)lykLBYGah>y$oSrycH*aZ zyac_yVUjyBBSU13U1(&Fvj58sXS{1MXKuKM!$10M7XEBCx3uQ*l4^nn%btxYCS^Fh zy>`wJinRi4(Sil@VQfnn8G@k#wZO2lW%$<-;iP$rw=W#$J7Z&9Ki1;@q0Ani08C3o zhmxYQ{XHWUQ&O^-f=v`mNJ(2t8-T@)<-Q0#pj{beipoX=!;Nuc$74}db{va@@#M#D z3A9DnR2e#A^X<9u)ipxL*mruSqFwdqhw*EV{tyvsRp7>E$0!P;=o!OQ(Pwip!-ist ziDHJHDJjGPuD;m$-8I(tvFkoPB+SL0F?5ZMY}Sip^Eu2I4VpPT@6eb`JVE+Y@^RCj#Q4(AubM zc3w_N!A8?%li2eljhoAp#xPR}6Gfl(MPZLnH3hw@begY%1NH7CYY+a zHflDu?7oR($nsW0zpCPIV>bx3vB1zP-zJq|ii$}L8&qXAbIB#x7-Z9?%cIpKYh{Ku zB}VM-C`M6<;m|j}p26$pn^uO%!`=#}5MlS1ui!b$mviYCzsSBrV;s;LWB=hX_8%H! z|CarH^9x@DTqM#H-a%gsn^eU{saTJ&UhMZxs$>$Ohuu)|vZ?`ob@h)q^|<4iaay-U zix;!c0sFi03Pbo=snD)bT>BcCSQiM02;P z;v+9t{oVq$xnWYtFMj`OV2+0Y-(K^Y*8qx>PCALv(NRAC`7b0n*MVjH%m%t? z8egYaS8*US*7YB?!#_XZfLHLr4}P$AZxDPun^tr1*{)+KTO{vlDYhSw*V@iJUi=Wrpm}(pM*=HZx?e;8? zdCW1#FgiNw0JR#RVG4l;$BNX-NCQ%(!Ld@hrBQ+Xqqtd;j=>1R6ds@@V<+GamtVk4 ziL~Ti81xzUz{-QGU{)y>h}np(VxzK#qTIg{DB(7pB4h<0Xvc#X2do|7$r4&rSQnb8 z9j${*|2G6L!fOMq#;)P&=_A2Y68i?RP~38`*Xkp@~oLf+=F7*yiD{&=7l4Mdseu zZpQeF32C}U z=u|?-L`_al#MZ||A-m`D>sIldp8sANx~1J^?-@hCa(R|Qx0E2zcP05=#r&sAm$q^M z);QtY3yGx#$`&9KK(7~m`x1r1UTA}(0nkISF^5%I$&D>oofWjI4le+Ce!tI3JL z&es(jx%YKk^@86sanf3bzVRsfx`)ZWJA(Rn3qCOe&luix$P$j&VtaPH{x2MM?c^`oKuADp!#7k~ar{_@u~fMN{Ir)8W69(bBd zdOe`Ufv2dq6n zoHVeZQfw}TX>n&|iWQc7m0{YH?wmw-RFM<<`#|4R_E`Xa)~Vkp8z`tFhRvqWdNadj z)1_?+w=oqrggjWAtSZ*_OQtG&G)u24k;-mxbxOlbX$AVq*rS`u%1{_v$C=Us%c*|F zbYbWe7LbdJL0(m`zT0PWua7AOQ$bZ3iqcS66*H#PbP8dz>hgHGfrpFrbfrM6%mx#3 z;K70yzqr+pgtA9DS&e5Y?&v0EK}#3m8C9}LRZOd@E=0IFR2T~kv}iJA!I=kZKF8C{QO;Dz3Ryq?=H&q(u6X4kbX3MB zov{g+(1uAWUU|y#{JAs1aUXuaGk><@X9~l5W!OZ;ZMWRY^}o0-)XN|g7)oU*ofojb z`UvYOSg$Ik99>Oi_|>m|9nu_mbLZhksCqD7X0Q{COU(P`Xy`r8b0m@$3^`>AV z!XA6<&OZC>4G;qKr1kJeQh2bkX3hQl<~O&6@(w)k6&!frLHzWmKMn7>3h;+N{2|o; z)KgF4m9IR6+i$;})vMRweeq)ZT zt>HCc@S(*r;I`#H~fPOV-k=m+bwIXXJZ(@#I` zTNCQ!k8ip6-g`;M$=vN40CLPl>vVn&j>q~Kh}orpmShg9+8FRj!)waDF)#&ElT`&I z_!i|gR7uGp>o72#M$gYP4;dNuwM`}+nWwmvv7&pU2RkNeBZGQxf zHuz8qAoJwoHIE(``{P#{2n|=qhWnklHv5s9g^dAfA4@YF~fV;CQsjQG9hSF44)9E!o#@5B|;+jOL@?b7%8mvG{(29D1XV2dAXW|in zf&Hkcc{KLj60cSDpuvGh2b6nW>sv*wYd>gkEifpsfnRK$428l8#RgMV?9%OV<`n#9 zqU7i8oKuR7F*OE5TfvCHSOLX)D5vb{*)!OqIGzC3xe>D^unn*^uq`nB81Md}`-Z%-5{)O%P69Bxi3GJ0lK7RQ+ zax^H-l5CVaCxjPno@NQc{mT}x{hbTpRejX)8QB}Rf|s|s@wwM<_F*eI;Dh(^;u{JM zZp`CCN^YVThP#~%Ht>x%TkuoBGKP|S0m_PIRq<_QxYAVox9;c0Lx47g#`Jtq|gUCseDbN$E;O&u(u-O)d#Q41n3Vb8Ov? zAU+yz+$HQA!wdx#I%tZD1ax^JThJJ#D8w*r`fM^CCdw{t)1xoW|5Y?1Hpote6~+r^ zbA<3*6bmLhrNLW!%oM^@Sy_Nt8oHG~*UB+y_uaVfoxad5P0+?! z8Bu{K`c=g=T{g=!)6$`1dUUJ8nQmHMYy^zL(cO(V6F((h%QnZyFA|O?D>Dc)?TjgL z{MA{2RJD&`m)&;dwTB;Gd+(dy_+~gyIRIaQrMvIOt6%+UuDk9!9=reVh~tM!jB`V< zeemS{5Al0 zx7++-<*i_Z+&N=6U&eTc8zv7LDaM}Pu1Xq$p zIPjrFP^$~1(R6Qa0bfwcg!`wSdTIcAC!TmBN5A=~nuck%Fdu)<4mOg41y##CjqI7W z$!dUN^w-aQ?z6SBydYU?qb&@8v(7q;(a}-b?RGHNP0u^@^-4cK``ORJvkNXbpQTHe zxJaXQfjre*o_z85C)9}eBpLE(*71DS>>HA~039Tgg+3zQx{H~h6@Y1DA`OR-`nWL_A zU$$KPe7D^O&-$#-Menou$3OltNoV`ppHKS8BabBY^?%hs|Hn2D)^o1$G5dRTXBp%b zo;KmWxJ{mf3Vx{>EZYN(IFy_TEPl>M?PTgOQTKtYRV2yXX$=(-fVelZ0pQ~SpT_$o zdSDoj2?3AeqG_scWAxp0gGzkfGB8@*aUm;K#E)gBh&6 zQY!1cR}zmcF?da~o0Ea45s(u4#ixmYJB*Pqcm-{Y^(Qh|;l?6!MWs|QM=RZ51MUD( ze;8*(@;;3(+$dsog>VdnXFB3`do7T)yTAB_U7{dsDhF5|EoNx6+?xgQl=)Dh243?9YkUUqf&W|f^vdyG)3|>GH7e!J3xcc(y*-4=fr8l zmA!fVtQz8U(_#LWi=m}Krl9`}^rv9sG?+F>2R1ukHP*1lnk>Wu%pt7(*VDiwz#8BN zVW%x8c;y}z2*!z~kg8&8aud_NHa6OB46L*n_#fb8G<)(Wuh{e`pL}#PcR${Sb&9MH zw=dp-Pst1y-1P_Ezi=1!Yz;A=j6>i56xDT8Ja^|^`OJ+?E?c3v=l(X^FPg^>@4TEF z*R{wojA?r`%Ia!{eY;O^^6+9FT>3obPZ#|D@{K(Fs~x!Rj&c6$X2brsZ{mDo%v!_Q8?4^$}McBvWzBZIa1AtKv_ZQ0&oSb98QzvCV%MwZy&p9VaK6y z=BX7Ev20 z$_gFYAxkmXI#=LNOg0WIYOxEY-+2`g`cg8<4C|R<%FIx?2-bc9uN;6gV%-HwS!s=h`3ru;wFm#~pX@^{;;e$6nHv zh7(RWp3%`!zV@|mFsYy?nhu&7mC++(T4hY>oC&S?#m}Pu=Ih^bwB2Y?hK5n(qQgQp zJU)*N%2+>F?5R+h_Z1P?euwRCy>7dWTx>vwKEkAnY#c6$=34&p8kAE{IW-*1aQ4|} z^X8+DtP?h*kAHXGdFL7(pY0fjR7j5+w)FFCm#}i>EqvxP7lk{Y|NQ5|LGnI7U-n>d zn$#yQHP!RiO*gINoO8~dv)uFug%5q`9In6K9%He5`Eo9~6LB=s5ze3HwJt)Mbc=e@!qp<6wD2HcHD8tS~*d>J6H$7gNXP$EmLvcdFOK2VTaLf zw|W2j-=Dl2>+!C4#WDT9_npOC-g0zE6E&1V9oW@sLZnfw(`-;wA6GUnVc9Zo+8f7V zd|yI;$9kmYMsNrA=$m)GvmW<)#flZ&b=RK;D;@Gq+vM|Jwrts)fsaxky7SIE0k{n; zRcrV5+go09+il*Yyxxx~I8Mix2iNhpO6aX>fB#WFF|T_412A;>G2Kszxu?N-2wFf3 zss?$NnsbK806_;0S_3c^0>~1gW=lIT<;zt8(hx(Y_&*Xiv%;nyaa4L=N>3p-ii4by z)H>c*F|AKwf~wvAwt@eM=CtBWPelSqh6qkQX!pL7K0boo$h6wlOvHXvTWadz6hg!&Skj)%UXw)e^UvP@CPh zu1>zi)5aaq=C$A2nm@%xxG`gerYLto7|bpc&p7b5*f_yb1%b$)A6SY9sHrw3PI8~G z-HeXl)aI!MDD2V+kzBrk;jfCO01m}_M-uUZmz&vwIDlGNkm?SKsPMlHq75iPXUfX5 znLR_M!tVsc`sPY8pNySK!@;rzW7#lYZMFGAtH+wL2JLb)rrhj0pae4wc@wH($TV!J z?KaBr2#jq7#XQ)Q!`&JDO2O^GpRor!J`HSa(W<;?6$Mvsv#yo4=i>wh4|$d|GBiw{ zHz+aOLYs5h%=4MyrHztP$_<=6@fc4^#)X^La`scJdAFX&TU+z^I|Z*>)n;_K0eT)M zJ+UP>Zyw>2<6gmaf4GOw{{8`u9ovpw$L4_ujiDAp%_f?P4{un@;wPWsB|XDZ*76!Q z@E$gDJ5!*C7;7rVnnTd*vToygHq1;jUD}i3nvEvgE?PvhsmWDFt}-ey zABu_t7mUJA3qe)9!YF>(f!EGdWL9}k#~3yi6_0fL+&9zXu6Bn%PR(%7OqU0HJvLVr znFx#XoMl5TmX8dv&&V*(9Uf-qW|Ku(&Zx47t`|n48Ms(2chE!{t2MG3K0`qQ+LF0p zfnU`0RnA7<12r4}#ttqQhX;&ufo@!g8Br*)!CS0pgPkK?5)Go@d>O@AD#Wury`O8C z-*HmTmaLLREWPZekxF-~tU0MkKgup7VYev)wiswc=$J00lo$*>Q_`*qrcIZr%4#jU zrlgVzM98(q8|rum{L<0YYfdYmj|J4V@atin5lTvo*s$Qro95sbO66#*9C*bYCM`9F zow;7$j^zK0!RXG&@NhiC@r=&Tg=^RSqM{>t+?8Mv)D>di;; zk{7>Zjvgas>IA?4{K|iE^^dOQ7uWrwb}ru?cih1%4}N7Lh5PYgf4<=jZ(!A`Rorsx zEzBsG$}%=-#nT!#X_!>Pq^_7z72o~ZH+aSg!f!tMXfgwBF>F%K8o-sg`yR{C266#y ze0!|0@|vUnnO7cqD9@~0$9eBNn@J^Xkcv$hrewAT7m5BUDQLX;=36=T*tfH8-8u)9 zFX7yCKQxEdF!Ihc$c?`r%|RnM?RW2)V~OUqPlEwc>^oivwdp_gsZVqD)mH=7Uo&bI z>wqO)^8Ifwu-5(5RQP+zC6{p7WtR<7DXF_n`?}Y?E`ZGwPdt(T{_pPxpx|klmUZBP zui$&%`!1uSqnv;K1$^?8pRUzy5OBJhh4y$;Ss?h6CafY{zD|I9r!KTxP?`$$DUIgh zUjDwSjgR^B=g&!>xv#pm)6-`A?W6Ca@AtVe>Fk>+tD+toy;-~VNj~zC^J-(fUZ#ZKX`O7jkzT&vylHJ}Qt#{IeK%LG zT$#M*+ch|ksipC4u1B6twVN`qfuRQ4@$6Tsg-p+O46{Jo=?r1b_VB^g!3`f1ehbEd zJHOs3hXhU1Fb@usCb)IduUT$ImH=~NLQgl>VC8~2`I9KpqmTSiSA(bU zVqhKCBm!vK7_I6Z3vuv!(tA~`?>yfTelhZ$5+;O72vzCR8B z(}n*v7HB>LY`_A{b-?35Td~WqT@ZCvXVRiP?c-$0vz+nKd6ZQ}RrYA;oJ>2Np@QFa zCivRqCcZHZ>x&)$Pxt$LxbqA@D5u$G-c~$mdi>$O`}o)~yYlHX4`bgQcjVza|HA7| z`T`p^wYhF)Bdex2**Y03ynnW{flp6ta0C`)ti@JaZ^!(x1+*HYWU6AiznNZH1aRCh zOZsI&o@LA%o6n}{NxHp04G4^HxHfvSz>9A5j$MT_T=@o!QwdTP^ogxD9|KSvZ7*@unjVf{;yJ zD`!n%yoq zX~L$1)J+f5PW{9uKh8|2%}lq=cfb2x_FECnJps-<^Gy4^)27{NGd3>#I&l=3{*?d}@5 z^_E)!8x-h2F8(r`5!P#=qoSs3>C&Zq`jRhO(U<2 z-_D=ctYI3V@2HkB2nN$}SQoBEgqv@^g&lX?g{!Z&M~hr=!3ErT=kNH`r#^unA|8BQ zeDPN};DDFcXj#`PdSTM9i}w4oD7%t+P)p3F#-*2DoRkFz9(W*^ zT=G?JxZ!%Hr`sHR>~VbZlb^D@(A2?YU90D5W1o8y*mk?kCqD71fqKX5nrp5JCY8}_ z)~EArk8K?k*XAA{iFoC{?z!ilwcnnUd+f0XgV$ghU*foRa79R$f+;{Ii=j^?He^jliRkinhn%{xf_nf_JShZ@^ z8fvXtbtymkqd&q8H++&``?X);8P9k|#-W`-d&V=K!LR+=ujKn!Yh0K9M9MsU-~%7X zV-b;jcJqcCZgBFziM|GJe!0cAJ#(+uLg6hnY&9Ngyx21@zqGDed8~|AS01&*tA@0L zDWsz;LOxSyT7vgDW@8zWL1CSme2?GltR>>~83Q*VJj*Odc@|OvAg7;@O`Nf@X`9OC zEA$3ZAZ}20DlUxIpBg2dEsareF+?`%XadnO<9aPdRx(v3dNF5`3{@<-Pc*bbqHjCX zY37G{c71{#J0EHxwRVm(&s7>z>(%rIxV?+|l{ct08<%A~1yg2P=BQL+q-L%8Y3`vT zCNS~_tWK7U|BJXt2I$u2_6ZS=qbciCEtm73!oo|VR@UzTd*)*TS|k*ZjKL(O+wKeW z%&%C`1&|zW;rg{t2!;Ga)9|%{+0B~Kd-(zBK8ZXYNN#cwLI}(y67O7uSr8Tq^R8R~ zFc7_2gQjFDC|B(D{F}Wc*B&{{TZT1XymOXE5RfoHI1ai6hkIC_gS|6E7tq21+XI_0 z?_seQLuj{wqrip01;8T~eCA`9aLp@EfGk0Ko_6)MTyf+mzyG24(|)?p0r9$vI95Bu zH^eznKmtR63%4&I%sbBBcOU!13PNBb%-QdkEM(x0*Swhb{_ThP?N@&sS*>}^r}wyX z*aw+GIxt+q0X!AOXAijYD)x4Fx#z^)bX}LitD}N83o{U5-LKe~Z=fj4)sjV+f%Y-u zCBpXRCP$7Q<<7Hb`2Jntzi0=XhMAxjY_VEyvDlq~tof707BAN`+%vZjJk5rJhGfj8 z4Uin)uTgj{L^vcJhh~ApUEt^}a43X$rArX@Q})&~eb1>rW+Oc}#B+yh$TV+yoQOLc z5JJAQi3mL^zakE^xsh6pFRKUM&}5B^EZBz&)jqqKk>4k&a@~Z z{Fj&gB;WHr=O6Q8u?@83?3LVTOddUYv`V^SpAUZUgS_iq@8*e5d;;J5z2D0l-}q)q z2x2i5>O1htyO+J}r_KxGcYW7)@r%Fs%K&`)w|^VI@C!eGVA{nIbw0S~x8&wJkU zsx~cC=S??#HW`TR*kk?i$9tpV`}e;0U3~oGALj)xc;SI#2j$QI{Li@JipzQY#pqOeesLGwcbRwg*jptaomN*g>$(7|M&m>YhLhz7gYCb{=a-)|N7VS zWncE??uqb_hdh*zeeA=0`qQ80y6Ya2V2b_zhyUns z?Zk__%sxtTv8 zU2r$neeAos@8kK3|3dSuo~eQli!YNrKXOvGHnvZQ=y8youGsM0=$E5K;Eld^2gZ7r z{H!oQa*-G>u7l>b0YZpQ@xkl>wKD}18Mbh6C8(A79LsyeVna^}aLn3;3X7@DgRkN~qmxqPk60vziDPwN-VI@n>Kzwct*hYawq<})6= zdxoRK2FM2JUWpeQ_F-cV$JTH~fQvf_t9YNvCU6z-tV?mu6!jp%64c?HmAHV6p@#f#Ti7)<+A7s^B`hM}zXJ59g##>ShC(j+Vd&6#_vk)&aJ zd>D?m*yJ!98K*{bS)M{Xr>X<{x?(Lc+1Y>+LfYtZM*`eNe$5jN6r0is2~ZpAWn6Zj zRp!>FO|)&8by%1%*^q6eT6z|+ta@cljNm?CI_meyD=e`MXTL=8r0xd=QJVvC(?`kI zfb^0!NZdw2sb=&Geo&R1%HIpH-XQdH$t%2Lg|CdO$U=2}c!hA<=se$NYQ5D$Y}$Y= zlZmYWe*M>fBg66H7h9I)F^!*ZpS8f()~j(~ z_pN#!anKlI-Glg4T`u$137QlSOV%C6_%G3gLe^;g^(SeZ>S2|vbNDlol4^&HYe{!g z#tAbV1SuX(b;$Kc=`wX24^+DrL^Et=ocXa8T#@lqJfrb5%k>+XIQh(P-j7${&^)uh z9>YTIayReKhyXSPtM7wbU_ z)ZT@fUlusZdcndQg2YhA7?vf>B``;r1&h;;_4~o@K#P~luZN)|Ow#DF>kv>=Rw8D) z#2FMg!T^Lod%uiJWrI)a&SH8|#S z#buZA-CyvHQ+B})Z*9}7vb(nnB5W-- z+1+39^Pe;Do&WS0eBv0~um`v9aOYjSeD7j|k1aM?NmN)bTlYLzw%AxJH?ZWcdAfcl zj1|sokT?d7ro<~f&_!k!B&O)z>^hEgfumi=u`Y0^3mlTbEX1(Fy zL(hH>%ap{#7)iy%F(zMN%l3nn(c)EK_d{kXN<4cp?>gqeDJM>8Z@oH9Jkx@dQciGT z=qAuo_=b9=X)JLoMc<^Tgv3ylS!2+882mCH-1j)1!sgb*EYX>XCT^+XOt{2Ig5gAk z!?MkmF6h%K&$U_-q@G@T)?rAV;UNnoFHw3!L;^H#lG<}u-l`3)WEvr?`QkUzMtWq; zcn!y5%+M;f3>`9G2qDp#HdUG?GJjRgmvCo-)CK`lW3vv@I=9ej5lO7{`}*Z`d#-^+B>MN3F30! zYZ(0`ds$c;4!%8KuWi%6Z|k>hd0oL9mu=l?9mGFxKmYjW?VRXDUt@U6r`37<*bW-| zLG#mwOi%In8Yl62-ABVlCi|S;9PwkU;qbbiy(>+$^F2))2d|T9T&qg6jt|1!ShpM- zy(RRxtjijQQ#4RvM$5RS>-w>2J<0^OV1>zW#pv`R zN5C1H#nh`Xng*f{-`=CvDdzO#Pgj)Wz=o6PKg{}p|FXBw^DWy*n8DU88kQS-(a1bBgG&c^^Z-vH z8kwIUp51)NMf~&sx!{#I+z!BtzVVy*SKsntzTltOnWCCOX2J~}gZ8K@M;9FrxbPB= zZXJVDH}c*SYxWtk5^e-FUvxaOUvSHMhr8R!01kys_E__x$6mo3Z@h;aPoB%A0@2Xy zbp^oYVvE&!Nk8-iNg=!wpH8}zoJqOzl1n*#Zih2FJ```xJH9}8(xaDfo50ykxN{Ru zE1cWp4|kPcl3nhdbvcXbAi}l^ox;!$oSBmn?lg*`l<*GE$s?avBR5ne`nD2t3IP@( zY)LdckIn+eLg3J>V>3iWdI{|G184hz)5E~2^_rb@_h!7(BjO`S*`dq4FD)t)YJ&>< z=?aKpLfCDDXh4+32vZ7i77}hjw#H@=SjphVmC0hNL0GD<0y$hEmC1Z1ZFW_6F}b#C zu}kro8D5Bdtk-zO(b|kG7|~YVu}|-VND5Wy=!Pzy$xhzNK{VpQ37|T1qA;+Mtc+=$ zMiY$%iOI<-x2D$h+z-w3W9?0-6|HgL8F_w>W16m9^;O2OXTDu%ARDnbCM>SODNV~| z!mTzwDmwFz<8#X+V7#pTXaipXXGMoOl7{t<2BjnN#g%yTHcb3ighN|zCk1fM;>2gPK6R7=5dQ_vo+94zjZk1 zlpHCQilOuyy1c`xftn}atOTJLkk zR1?g_yH-&Z+1N8aTWXDA%ax1zk3_>JC&!tclJ zdx3??N#^OMfK+k!kLQuDmapqTAv( z1Pb)U(ou)`cHE_xtRv<2^`vZVY@LuG$0HP)3@AgaTQC)ZY;mN;n<&!=tSof5kZnX# zw=Gh8HLJz#%I0nxxn$QA7-4iG%tD|`hUL6Vp|8Y#?9i)fyr*uRz*=j{#wo?H6w!>} zJjR4n7f|P>D@~%tMHJM+BDI<(Gdf#3|Azg6pXpPo#bKE=c#Yw*k2(fVz7me!1#&N( zTSw};fOu))rHA;HS6;!lz5bH`-2d_`_^ZGEYo7YF&*$XHlXRhr%s|VYMY~J!m%sG= zTz=*j-tfo2&x?NY#eB}!zm}Wsx{WZb(wRj;LO_Or%VwMGYR`S^WnB1D!W!%x;Lkqq z@f;miyyTBR$m!HoH|t;!bciW)EIU`PJqXOZIYZy)5MKWggjqKy1lV6KnM+`hMKoG< z#;5 z>d(x#bI%hI`#Toxz_q2ko=f0xCmiWIE||?YnmnKLF2pmwy>eFLU5{thJ!krXoxW$O zDZ^T3if%_w({(C+4-ym3WTP?x*Fg%Q%>25hZ!=OnIpVx~J~w z2{xAI!*t6ZQ_kXOEW zH?5vN$UHKKFK5{Epc^^h#$a@#eltO*xNX*{7!jwsA#keoAt=}#~72oTpiw6 z%38Z#DK}W^dhPo0lA#&}FkNTb(DX2Q#n}ID4S+@fH*nMjny2rg7eF|#5j)+Ff1bD0 znhgXev)ue!IeR|E(med_GlQeuDDd@b!>aHrZ}=YU$?}^IEe<`sjd3wOKQ-`EUewy) zX~%vLBXc~vq1hT2HC%09wZZAbdh2$|*vGW&WzP9G4GPZuIBPtN>DbR{-RBfe+O;zp z4eh+uaJDo*es14l*4Mg9Ht-Uh<{8ULc_bhVIW*LGrbS>GAX(lwZQK3DlKM8$lJQ*n6*G?T#w;gc*;stkY=LX{3SM;|}6op6b5a zcpw?pu8o7*^lg{9Xn3B(u%CPX$p$=@^hk=TWlahvXO$9-(=2QexSBJuuHey_;co^@uLQT=}rMy!YX?E2mv0x z2@gI7+vniUk3(3%asjJ#ykiq0wOzhu>*C!^0Jq$J8-MW^f59g|@d>{8i@%r;Tz@?x zq4EsQx)~^}hj{+-hkou=y!f%Z{M+ySQr`FeJ2-XfZWvY!2=i`+qOAKh7al#%ayDnV zvqRUfQ^Tnf02peb3oJ+3g2b!w|1i z=?B)y`#cVvi?H>;dLW)5t(1E5x~tfULb>0lWlnY$p@i%x$y-^{Jf}^SGlj%g`-zukW4RjWlJ_+RPfO#_KHK2 zW@}7s|OJBag z;_DUTvu!W7;m1<9(JH*PXQh;FJ%Occg@Fl!Vv1mV+onX@I6eG+eC=imO*?Hr<+*B~ z>(+)sfm5}Rr|-KOom)0jEHKb-%W2UUdJ+5QyT>JTJvKwyw{sxew>BYN-aN6g+HYCVg?w9Nm65{J`rG+ zvJSVH*Dzk4R>B<1TnKeSK2hkTY?xX`Q4z@oWYoviW-7008`TVZpEe5Ph%l`!jWE_z zGR$_RSP7#oFoI?Su5%iNI2dT)h>oVR-hz88k}}4U3{llQjzE-i-b-nB3i#wiN^M}< znCu8snPbgmAVyJIUtY2q%=WQ9%#ifwCWRsm`=*_C1E6C44yqc)R$}=%u;-HTZFRb4 zbaq`%K!_eqk>j?7(pg4DCyg>gNu$k+CG#K80NrBDN`_&o5I){mC1r2QN_`4VNPWyC zhPg%sP?$*!hwa3OF`~lGsP#i6&$Zg()qK9kyMZV04QWx1nMqwfjx*kwr-lR1+>Q9t zF4U-{tQZ$2{?GSz`I&wNhdQ|K5L^x%Uqio)8E3Bq_SP{}b`!Xon1OZ{-<`bsemweL z4cvO}K1esxsVX~X&vN+4kvM({$+#yOnwkwwfLHy}zvubi_LF?|Bd+65KY9ZTnX}e4 z8}kj;Lr*7x?afW*8yoEG?69+c4)f5G=w=o=L;|b61NQi}uX_aF@_R4mL%;lIJmz2j za`qN2!i?3hj_&6_t4adIi#-tF^u8$It=V})r( zRJ@&)=Q!skasWw3OllP*g{}Hs+_L){()x(>s(JC-riv21;ENF05@9<8j&y%FO zuS2VE`PK?{Ce96{5ZW&BieV^BTGN$A!%&BWh(yM{ujRaJG$w(km9;+7uB&R|7`|@xyTNc(uIA&_yl7DpKIixiim-$LAt0UyBwbrr^w=GF* ziq}ga!-0dxB9u%=w-b(D=L`8?i3$|gZ@vpNLFD0yV=Q(2F~QE(j)N$M>DJ>_$~nf0 zc5<28+ge&IzuJ$%-M()A4~V zl1DQuGDL$cAPrNnGEN9*Jl9%*x3?56ZHF3{cHeSwPJ(%ud)?SV6YKlL9!!JVxv{jX_g|tjMNmussl!Laioj&4;((A;(|~IJX4dfuV;hfXg-_Ia~=m1UNxFqqz-i0QbT1FWcpX&)(v{ z{LzZT+ebKi?hH?P;*)s$yWYvK{>rcN;%|L1+nZbL?wtby!!T4CUFRt8{`;G_Ah?TADP4L>lkv3u(RIblkD@BjSUpIdOz@N z+2&ok$J=H-=R%~9K|SN}(o!m`H=@x~h#V-WpfE36kX;IMjYcS}2jvvXiB->_<^ISG zfz7Vta3>t@z0lw-}31dmrR9M*M+Q1rpvCgV;3O+R>dIsz(w-&QY+A~(46Bp)yp;Y` ziwDGHjUm+=0S0Snqc$?9p11G3=W7|fDX{RN{DJ6c2Tx(;@Z%EWeOxs@> zpC6~^<=$Y>5q|twrq#Cgx8YPK`YPk{hGOfzEd7l??Yz_mmr&DyrwLCdW163CtGpW< z{WWdZ#&Nx74x)d1ZMba>$F{C-duVPt@NFMtOtyw)t0zuxfVK2!bmV#2n7*}oP~?Zn z%B+qUK3w>x6&Lp}Z=9O0USUd;QDRb8N{$4j$S+C=r48NggtmH~lS~;;epA^SbXKY) zBZ`|oRyII7CTEVNIudh=N@Kke5gFl58_6nJ-|2EIG_aAquw@Jl|2klN-oQ2v*CsTw z`rh;CGtagLcKea$ozG0$wl5S-u6KQu)m+Bx`?7FYYs)qwTG`fJFiq#<-GC}|Ja#HyH-RbrV8#-0-xAXB*J($hn&R4 zV$>^yHw?qkhUlT7U!NQm+CsS!~vFeNSV2 z{>!0@c;ZojlW@~%I5xmj1uj=~0cTIa_WhyzLf`?wDd2kI`OITPWAmYK*C(#w;a`6b zXS#iY3j6DQUiTNT<8vPQXs)>GN-Wmjh58Bnz})po&f zYiHHMKdhk-$39Xk*&d55(O$(f54tOY7#_dZ0V;L4{#O5C-ZGDO>Y?~U=~CFxFbj5MF})8?(*&uc}J zKsSa_gIlu0IeA_-)v}h*e8-beX|I(QGVwPKq|AcYZ>Q8WWkE7N-GHeOW!U$0n|4Gp z_~~yoXN_hr6>c@p*GOZ_uz7qWz8P!A1QCenx%LA208$pJHHWRi-tHqNg`T zYQ%Q~9{**$Wqw*CtHy`Tk%fGo-vedeJ$}ZxoWiM&>f1QILF(tH_NE<#_w&JY4ht4-mA#@`Hp`=pTke#!a8^G`#rU}4wv4>TU?}G|5z=|h zVkl}=D<-<}nN`i3*?K%nX4o_)N#(V8?yP00aP19Ex5m?R`_v(`<$E<9%|G9(!RT4cdd;6Fro>>u5|~ z7vSiCE`$^71xGILSv+=4e<{cz2&aIXiIg)>e=oe0AO5~ge(WQk1z<6s^T7LG&EX@5 zdGGb_XHH;i`w)+L!sB@Fd)`aGS~3qa&hG7@2y;3X8yoEG?_|gqVTMXzJ**JQ89D#i zm~U|S&|!9Vci7wC1L9owD2qkMQy%$XKKS7qIkDW&bwY?op}*|Qzk(ZYxRDQk^n(C= z-V;BMcmDl5IeFqfF1+YC0MEJhYQFes*Kpkr@+@G$?sJX;x-5-=Qgv_6C)lS=Goh-vgTx3~h$M z0%g0Ku?Rvx#5-U2`+;>D%39Msun_l*@>L~e-!OmI^gOsRRAn2%nLg1woJWvx>PwJE zh%3{E>p2#r@fh=<@eJ!al?f{4Zd)gy5#wvA{ShB4&x=r)nD2H7>AMe`Z9gT9wq;fa z414rlOP#u5uUXaOGX9-646TXA1L26OQm=BKiQ7&XdKIv4eA#>}yiFT!2YtL(xU|=Xc21MHQ}7yGRy2&ql{W8-5#f!N@w|-Xd>cyH z8n$C&X=(wtIG-j64}Y2avFB^*)0Uqok^64p9zUCEyL@lkZNqlQ<^8z5QK^&jS?I;; zc$~QT!}BXOXk1Uz8ehwTOW*Zex8wYW*89}@_s`3FL3Jo=DFahbWz#LxI<4Ww%U6Tf zJZ9FEIX4vYjS^;9=CgZV@zvz5bb7pqxMK^kb-Q-M!e~uS+8mS&vWB^cyEV}Wjpm4R zBITL|0YdSfc{9dJC{dsGSA_VxIcG@nX4b1sNZwkFZQHrk{H|#5+0$xTz1Mm@$Mm7K z9=-$EeiO<&K8x9MikW-n&t`g$acJta-cS#}xH4_u{%>%YNw=_9I-XIX@7Ix1ex`7; zo6Y7g6_G99%Scgd73pjb=B%i(QW}f_cPvWz;-onL~T+Dy_pZ}e|d()e_^R7Et zu2&fO4)m=0C0}?weAta-WUG27TXS zA$7AbV?N*JQ#aqnZr^jsrI+vnKkx&r_mhG7ACv)E9h*E({qehZ+{4 z=DmrvVlK@;FE163pXrRCtq01loy5YLDXq(oKdn(=&+_t;x;&+)->kFAtRV;*h;?#GcLc@jPA!}?7gQ= z*TMnc4=QthdO0r*Ik`fTD&E+vp{@ICX~+8V{nju{MI4Buo3T;ZdN?b6x%zJGKYq95 zmBtDWmN&JIE0DdE(YPXCJz^0}l9F%E(jC=E%gez)Kpd|n@jYM)krF^kz zic`pQ(e})wx;|S&&QD*SXZNpb>X}zoCdw9$UHbI~u6^3FLTz;V`fXX?mJj9i+W@UB z@hh?#y?Eazdo$Mpbx!3LFzc*LOAzO(4iJV^+uioPCZ4}kQ?dnj_nqW!Eh5cd+KLlq z24`{Mr*bBA(s$AsPD31$hUJIm*6|2$+Pu%gsKJZt-{4h1G$s;>N_U*DfO1ro=d6V< zk;B|OpR*cHqv!5I%rd$};OK4)`}~}3kPfat6GLM===(K&cZA{A6Li3ALCmgtg6O?F zOw4t&1J_=@&8c%ctXBIx>4{I|_h0oYu6y{yxb?Q%c+NAQ&CdQFoxnxM zF5p>T{%rP6o@02&t9k0R@OjVpaz5uNSMcwD_VxVFx84lE1Fyb@r#|h;{JZb{P9Fc* zC-Yt3_1*l!FZ_H_^adq_z$F)5!ku^D5s7qIqb}LdD}L@3e8V?<15f+HFX4-x{#53` zp~W`a+Z$YY%>#M&_3!0D*Ifs|M?d~C0J_BnAG-SlA9>$LS>63!zW%Y_$d7#0CwSB| z2fAB<>xf3=-x5QLACT~I1#k=SN#J7&N4n_wJU)Yq2YB=n&IK;JbB~`tv*25H&hiow zKHYWM01N;rt85Pa%5&~$!IDTobWV3>m;yt}kZYR}nbZnl3X=O2N6=cDcH|qgD6g|p zTOkplD`Ie^e-j$N>lTFvOX!Lvzl|Xen z+N8d{V(Zq)^vA8Oj5Nn8RT1eJ=S__MT%Ts&(D-DbJ-( zH~((FvQkwUqB@>b2b&*X0=E40JS!_>Rc-GucHp22d z7rN%YmoX$b8%?s3I0>Fg2s*sQFw52xvL=U)_`-2y7CDt=Qv zOf^z?y4~hx1w@PCMmB9q`9$T+keu+x;GdDA7^Cz_B2BBXSfgO?(QG|-CQW>}tU=-p zxL9teLyg_6c&TP}t#5zU(!N)Tk=%DLp8bmS=PAXtC$0_uX}Ny8`V~@6iqh_sgi!ac zg^{MbQjP(6d?!vy0Ft^iU`2ZnRGghhVHU0Uz9&Tyi%W>!m zfq^5y*YtshgcSDV}d+?c)}C5DE+6S(g-e)-{-@Sd|<+9@UxkN(W_c~>$r0e_6J9doSy%Q~S! zekNu+6eg{9=5V0X4rO3X%*=dlt(*!m0-=-0s%Kcn*W@vkxT86QbUl#7ghl4`E%a{~ zvgMmX;j4AjvOvf3{H{_i?iafKHY0PWmZ@mDAX=)$S=#o(JMUW_p!t|G(~UIUW*B7( z(%*89b@Z~*q+L7Cpo$o9@Y{siWDjK@*k6clys^xMXJ}=-*%w{y!o|PYtJlIxJ6oFm zFYcicol{n%jLB=bl>l`N)f+YikG@H7?0JDEuCGEf#^Dptc~kZeoFCg zpO0~&89u{n4Tn^9d^oZnW2vK6pB@+OSZf@5xLZ}NC|hIWIhL(;kFqw(yh?uV*P|bQ z`@WuE4=?U{DKj2hOAGZ_rpE8_P}(f(sf^EfQ(LF7v`oQC{mCz|ww*UO&zEMg;Q3s& ze|H}GYmWiAx6Ru1n@&wsn}fyLs(FRDevL<(acLp2l(C8pz=gcxcq1-xUurePVP>yr zhva~u{G4K7TG(pj`by_?1WWuQsUNj-*-$FEOI#+jU1=x|9F12Q%pXLcQ`R66Ay0%)6qW4xBJX6nFj_jWW_k1jM z$A(~Qbo%jCYJ>aRX2|u_?G5L)UH{D2w=u-}rDTWKVGAAG{F$TBeA&T>FK8sR8Nx!M z(z%ep2Eu}Lr3fJsGBNCRe;C-;f!$u&Q)M4viO`$!kqFF~NhIJjxU%jF^B_%j!!JiW zV*WSd_pO}GJT!$Wq8dYQbHO5H^S^{Bl(I{v4Qx2UYzs6kl0zaqLIPhahq$ua;*Ylj zuihHioeM8Gx5XFEj?;%-a{AV@Ls?Dt5RJ&ofF}uD2zu{1W_RAj_7RvXa98@b0*(qC z*@pKmqLFp8a=&nzUw_cyKOY|8uZSMYcX#kX;Nig2H(-ZobbmnL zUV#T}!UIDzO0QqSd-vd$E%@v)c-x)KZ@3vYk3zVJ#|%AxymyXoUMGeon&&^#awG!F z%oamH;u4Sdf@+Cg)SQ1f6KDx4Fp9B#xWYzk!=kX@M5ja}b8zb=0A~nX^~3P zI@dr9g{C>m_j=slEL5tS+Hjqt1LkL6D(r>G8g%-Y53T9mc)0_>LSao-#hV$T zBPixRkvtzmsvi<>wkrV*wiu2IGliLukF&)v&UoZ4B-vnRJY)Y&h^RWPM9n}eUPSxt zY11fkD%f&{GQ*##baEL@35Mdw#%;e#-sEW54xg9{$L&!tMO7@kHL9ikFt|(J3uxlO9B~&lEu-3@v2#L+o-=`}#?VVh z?s+YPXgvzHD8-dCWM{=N51F*P<0_>_)Zj@>L_DC?B*YLdapfiBD1K%Lo6>PS2p4o6 zheF4$M5S&kC1+WP@PJc$eAnJC_tQ0D=;LT-z;pU|Eyq%07TNnt3<3R=MgwU(xsLDE zXpF9ahfBQrn@7$s9ciHMT+1<}~lJIrU{|0{VRlmavpYt4k z=QXe48(#QAe&@G-3xEe+c@0bUxh_qD9oYi6?<@BYiz@JGM>YrObB z{a3De(6zkf@7~N8eBslpIqpK2?xlzIsMDyoyHT^+ZEcfJZH0YYvMZ9yf=> zoABBb@Hc(L?PYVga0`}mxO)dqFJY}P-++D&vH(qqiev`;5}gUpnhBriO5*QI2tZ1V zWNaq=jYNf+i*}T{teHO1PtF=ttsP~k?+wI6gs>izRW`cn>L%v}s5aa4_rm5ayf(fs zg%u&uQ#!Kn`HpfHDx^KLLDJoanwU}&d_!I^<`J&PUOtT??$%^9GUJ|Q zwJSOZOJd@rJS4Bh`j3d4Q>O%!-W`JDpOALPY~#tw)k=bc)$x}Cru9|hG6SskQq9Iq zk4MGJVF>%2W*}+(}W|w8e4LJ|Zc6IIFU#rakaHP-*&$ zfBjB)jYhxjXui9#?`W&>DrvSEo{@?0Volyv}v-o#8C-mUmMjuD<*f#rd|Z z?$pP_=-V8x;MNXyXK>#V_7yob z@O7IDSg+Y%?Xu|RY|Xa`((#VBy$ygLeZ?yPc;#>ZHsA9-F9F~QPkI8k-*!7+_9b7G z(edzyJ&ZU0?VIxW?ei61@f85fW^*pN_!7SPo4>ij>1S@b34rH*^;cCm{{26HEkE^J zf5IjAyMlMT;~jkGcYjxUUsy;#^wm!Bk38Z^!eh7KQi&n3_YZK@7Mu}y(-JG@Rhj`99 z(v^Ap`k~LXSp=_JvL=)o3bVZ+Y~4`PeOw1IFRkr-s*-ni*E+CDp`wUeYEo!f1STT7 z(vD}@@FDjR8?wlQrN)Fos+9ET2m~jjr1aS<`RbJYLD?Ppn4D+Olw?3yq$^i80&L8L zMG$5oMK?%dNvaImC;pH;n2lzn8neqTRY8TI4#OHVR1c=aXqks;xZ5KMa|-3_9c@J_5ocJ)c=sP2Nb0rl`xs_oVkjqKD*JlUmVnL(XH;L@32LADm8B zc(NIpl@UB;D5?u>%`{^CpV$|Tk(ubp3&a}ViH9q3eoeLU_;+Gkq$C20|4cr#BGP)R zRj0A{txS*&wft?vW@Vy&dLwn;d0l0GUQBLu?_(GW zm1b&fH4fUoCBOIoe3@|wtpBdne3T6saX5@H z4nvDKo$R;8AGyW!zEN?DJo057TnKr|YoU!CMp~3K%3OOIs^QKu%&qyBZhif!Gu6}e zYQna0l*Bq^fyKx-NeOr;A;YKEgOqMxT!4BsjYC+q{Vo^EjG!Rb4yLOR27Y zEH}&jWD3I$GL?U&O&{)QV=#}M_bB$w-x&o5t%uQbZ)x6pFQ(zj`dU-GmTOnXyqF%& zDT!ye@z1U9lo!;u<6*OL8ayipm-na|#>&{D4$!;zlE-4Vh@^Wv_lJR9RrZFcV6Ku; z*5|^5Qy9`eGr$r7nl|j0SJFiaVM_iInNpi_KO-Qv(>F4C7;p++L7YN1So@^Rl%0mM zXk*)n>>Op72eSxSlcF_)!6_2f{!9XgLg0d~Tdq`u;k(0Cd1Hkc(I8{ROml@^JjR$H~kB)z3w_5{?La4@QPRb z9B+Q>TR53QWMB6;Z{!bu?+*d^kN@F60`R`~y^pSoY@zRa9{>2q^W3leDweB#p7i7= zvAMaKypZwp$xnWgM?d<}EEWrfzRx&)%^Tjtlb`ftmV3KAAJ0i@1%^++F%#)y-B{pq5pkk5&Ya)Ll z;mf>ZkxpPOZjf$0*P(G0>N5_qu~ofK3a~Gy8tL1V{$w~-IXZ+m->ytb^;;%QjSt!T z1YVv{*Pc$PhbGn&GtHipu~Id%ATkVE_;-a8M-%S-*yHI!2wi(sn^xB=Zt1^bc&(lm zcr{nA*UR}o^;#UiWAuK?J9v{V)@0(IxsTe=E$#c~+Tgy1&*QL! zzqX&+2&|2^!u*QCns{es-^B}N@cDK|y&1k*Sj>nsey1L9QrC5SthDQ3A9dz7GP8nN z&ShG5*z6s$=Vp{9W7LeP1tA_w(Q>7SZ3IUn%8WQ=7UL2TBp>A}>oa7-t;=;SVoS0C z5%V`_Hh{7nptaX5VLr>E*r#7NY1|Z#Vo0*yJd@>L3BmO%#biYZnKl2WH^^fD(SUVx zl>Xb&p>N+y3{NBGU7fjd?LUtPZ@AGsGo!2hu0+GE4Xd?}f4*wUw35#H^M-2s&co}C z$`&qfJo<6CRh!!u>b9XaRC^!{gVJZ;UuxEvi&fS}(=n#+pDS_U##KV*8K$sWp=y?l z`dvT7I`xj0x!qH7Qz$itE)EJqIY^ll??Q~Z5u6$;OuqNO{kR7-ht6&w90?s4g}^1V z8AoS)7f#&JI1dEmz#LTybuQO7~I+KDmgYe`g^YH3H}omRoT1F?js~ z{{9HuaRGe1gU@WjJ%?hF;KRV>+pu{VygtM`A(sQJR&h$jN3bh%;2V!01K{ND8O|+t z^AKP4TmPF|Z~hej>04gN)33UcE3bVBPk-7Mu-@P2QIC8i0Kf7}zYM?=pZp}g@C&|x zAN`RZ0b=N-8Jz$5KSd+-InVjZh^wU4eBk{bU~g|PdpUcJq0#Su-~0K41!;wT(`)j!6T(mk)ZNcx{ z4L6*ICtnVaIu5{ozvSe(J7DKt*ti5159TV4u@ZR6COmAh&kuFNr)S4Og*){e*A7d* zcpc{|?oCW-Y+C-8!UF5%7(hcZYBWC;SJ#+zVXl#`mUebc@=}Yxy+YUgvz<~~s#YGS zKot31*u;RcHz?z@5#VA=PqhaMrG z0pAFLO^N?DM3{&8T#$4ITw^w8F_Sj_uSZ#lx)GECoA6GP=H?=n87UG8Iq|$@DcZVy zvT-^Tepwrz;;vxQtkmRwaebu!_)UXan{xw`gx_X;7`^1sD>tSbp6qtAN7`cZH}h<7 zVfZrs<22byA>I;WY89JW!m5>vaxGt8H*>(@KQQ$Lm};1 zQEYwNnqfBOy?B4lr{dJ3+KHpo9ztEu3b7lgrY>gc6IXze% zwf=0wk!tL&wcJkaq4qTFB#Q&3Ogu`C3}+SUikk@?bCM}z(|a(DjtWl8Ao4YQ5!lJSJrlMe z70@`8tR>he%roh)4iU6U1QflJ@mVJ^H^NL}K9xoKK9iVlWiI6`rzQW%Z6qv+m2u;U z`h#t@#t5QRx>}tIRm7lzGj+?y3_y>PV!XsT8_>%5EIJWQ-LdiLxxUSOk`VNC8+r!r+06)!XVC=kisqfUek5srqyMcs^xXEP4X z0wI*-KNrqBHiK|x=(%Hm$%)mP{q?}Ihh;y2#@&&RZ3aFx6OKuMVG;kagxzy+kHSY3 ze)}Z6eF^s+h1Ev9&*abo=2yWTSF`@BJ-BfRY$W&ZnmynQfiu#vGEUmB`I^~^#Hv_0 zgg^J8S8(M6uH$i!eF9H7*71(Fyn%;Y_Yk@+@Q`b-1>mp#_OH4ABiHkWx4fCZ`}+^@ zCx7~lxIJyrvcF2zf zxan$m%+(OK;9>WJg+e+ue)`-#JNs)`9ET6D;BRk%%MZcRu3>L6<72>gZo{|rH}f}g z5}nRSIX#XIuswfLMej{LhR1IimJQ%b+Xj{9rvwip~z9|oTvs}J2R^}Hci{wm4Io@H)r9MpCE z_u5FQ|4!j&3NOXLm~MB9&ZVUX!dt&G%ocP^yC)zc%$fjD>Ed#xtfX9pT6A z>E!m!(DLwj1H~JAr9TVvF5}FtdiFe;kDAWBAwDis*DE|u^KWlJRXhNTKy<&*;l)Gl zpp4u<$&Xy7U6QF*-UP5R72BwdV6>hyYdb(Xx9A-bk@$TZIawDC){~*<=}dBY^4cc% zQ|QU`%{X1g!Ll-1;Vg*6t4gXNnUbza7mc2{pvp|^OtF@TCjk{hVv`X%M_5oN$FWe_ znD9r_Gl`+KsV&iHsORH9Da5-sTw~k`*3KaAC2s1b)f|l{v7-}3uZadn30sW@nH?OG zB)5w(;`Jf(z=j0(JpHo}U`G~?QySfsD4e!k!+D?Jw(-^8Kd&p4vDnpRt;f>$(r}Xs zP}ip@J!MBfGK@g^tqydfpdfKUZ>8*-3lStlZ$%e`!=11dIuzy1O4-pq4P8OgD)sQladdYygLVHOocMqTi05yF=r+>x{1#pmOLdK zg8^=kv%Fdc-qg+boPOY$L*R+JVpEQR?!j!u&tG_i@4o9K*IarT&w1)2_{~3g3;*XJcNA>0={s}agsOU?7H*v`EvH+4B5G-$>Wxv#=-A!UNKc1X)EFTvzxSH}?C)Tvua zenpsUx3$tqVbwl#+}fC7=PKj+R|l(aG_FZ;XRDhvZVL>pVe{N96*OaVsRO-OZr-%k z9U|7m+*#)7HT-1=edDIcS?43|asqj6eb3|U7^$0ptfV#UR2_pc{6|>I8JwE8*5O4d8eMcC0E#kDySJ>9ol{ikIwQc+U4MeN&&fL^E8qNA95U3C#@rqdpA@jD8ic<-X1wDuPO;81RSi>Uhn(*!8H19=K&m7aZPa|u?OASWQf}7$8o$aiGc{INMp4UcL%D*Nk{iXc*GFSr=_Dk) zlq%VPPi2GC5#m|TVx*buu(n$^J!BkF9YZtY6Nj%03+g-VCQ^fvBi(eIj$I19F`>;3Lh4D@^CMw1zw`t z+%xR+pSyj2VRM7m%{TZ=2)t)D8^PY-~01_!sVAgfUB>0Aa~q)EAM&ldwIa+_vh+sui>scZs&qwm!Eja zH}Z@JU&`aIIme&A{_pwRFL)Lki;mML_xbJL`ek1F@BbYz=j4f#eEF9>hfjR+`*`;GKW}PP(q+JO9nU(fFCpQ-SZg(FKJ#--tmBcDVF@m-75@5pUl)!L6a=PU-o}Zl6Dv9X@|O=bKmXv2MGp$r3`way_0nZGO{g;!|my%1dc`tCOW4~*IKpdK;W?P!ShPw%6n*wv4T*UZC8K?KS{9_Hjv5`0Z zeX5)<(;A!hz3$6}CQ92zJ9p=Ua|}dlNR1d&-5Xs#uC1s zd5P(H&IrsrSj5RPsbGv#8NY{IU$U;)hSQd0J!!<%INSg$`C0Q(&jCH39Q>oyQn1$v z7x{v-1ebX*%?JvamswJrBI9C6Y&oNu+Y_>EuuWP~TwVjCKexT@&g>5M4@x2?hpW-l zx__1Yb!D?5Ji>0>qF@G1jYAu6pfoU>>6;p=96 z!T)+KFMQMm{Nat)bMCsY;)h=NFZts?c^w-YM*;Z!r#~Hl2R`r`uK&RM`GsHjZ+!GD zyzbo9T=0Z15{}&DSamQWv^4tICcle#(`Yo=y>T3S>O>f|l zk9sse@smHv5C8Cg;;O5!=CA(xFFAhvIB$9D-|^kw{ayJm`+fJF<}E1;?seV3mpt@1 z%;sFo5nlF?%lWx4+<@hcaB>BoR@hOv{36)ijPv=MC()0<@Q@BR_ww9+Lmznla>>mi z{PX@UzVQO({fDpR7gjUA@H2Pv*1a?Q!4;p&4{RRFWc8U4_>PS|eq=uIxb=+3tv5KN zU2@)=(N}g^hoJbc*CNmW$1nu|v*0j+* z81r-ml0sl-lx^AV4Kchm!adMyA9;dP*1ZB%6x1}z>baKn-F$k4J%*S@Jvc!kk}r{7 z4Fl&;_61fbYf*Y3?g(qlUbg^d8qcp-$dK)3)*iqS2x$;Q;T2NgFW+NGFp_xD6kl|7 zBkI1R;s+t$CZ8CfAhz68bv?~#% zWo+VGQ6;D(elHWym2Way0CB7yJvovli!dh}UGJ!ts2VA_ir4Cu5ZE9Pw4A}T45~pj zZIS|mH!@RZSkaW|Cnfz!_2d1Pjt6U+fFa5{O+ZQ73=LY0z-W}FwE##0R4E3X0)v*L z4TDBqq0LCDl#t04Lo#?u$g;Jyb~E7rg^YI#xou=nH7AC*GE)Zc_+#fvW1Cjb3{a`Y z5PR-Z?`G_paoJ{I^+|b{cvd7$9imzwD}S{qFHL(oQQqF;>iUn@?>w9q((3=_bvXgM zwc+pe^mu4LPNL_KZWlUBQJ^YDWQ#05v=G|NB-B@Eq=T=Yv|DSc&T8n&g|radu2a%* zupOEzq%6O4{ktSXz7x+v#W6a|g0&fWcIXy(xzeD&}n+twoxRllIt-QNG!;`zC$krTAoq%o@v$ZY* z?>%}6Kk$%8^5MUHJ9qA%M(KFwGoQt4{^HeiU6%#ey?5Wsg%@AQH^1Kc#($Okdk9VSq?)wFkgG>tbW{XRaRo*Ep>lFk@Inl`)g35aLMV~)A}|gp(skVvQb(1 zR=zsXpP=^~wratP9{+-njeyhA<{uncBYZ*;BUo)7+*F`%J{8?uT>N{ zZX?&991yA*{fCi(_Wx40HB<|HhHo&OG-T-h)}gNTZ<%Pje6JT!spH2! zPQ=6n-lut9Z3MP+G&NUKFda0X#WPy>Jymx+w(%J2P}%8qbAH$i@25~BD zXZiBFO%vQZrNFLe%Z5W5mzjFKmyylf*m=$Jq-;rq24?#NENiZX9-Dz!hv538K2Xjj zN`7YlEx7kvnox|S85RawufLYl_t+*!nZw?-C9VZC&iwQC9Hu|F*}1x&e0{jCP>&t= z-g^mYzWcGNtJ88)d)6Af)~7$`YyaAhhwmUs*K!+$lhM%ZTT?Lg=w+ONlKX0RT>H?7N6ACaF zVN;@!Ig^+hX{`#PY)Rm77tf|Ghk>)}c)k+ijueuN(Lq^sfm!k_?(_ra(p`9qPB=>s`o#OiUy`M)v_Az-Dp7NBZa^HO?2{Pj& zAN>%WbUg5?>tHkRlj|8@cimZ7-vsj^8pn4Cy!8;AjQO!n0rSIGu)Vj(?)qLn1w0Cn zr#=EMzZCxLEwEgJEO;%-i#8Y44HHJoGYMRT@^ZO|$Av?D-Eaptv7-H$&?VFOc&R{W zc9@O!%piz6eJ0GTT`!{6$CqDTXr|&n<6+xDFIM+mVE>Lb;F4DJOX0JjU%3Wu=4Dehj?$MTprv*Q)fPod7@R zrhUi5%m_6eRz#b5m^JgO+)je0&JjvA4zKKHK9`U;-Zb;$bI%;SgVBgOJ|@vs;8Q>Wf#RuGta4ccIl&18nukI@?L{$wIIj)7!0KP{G}@l4z_};z6{b$fg*`V z*Z8*mLdIL-VhPVR3#$9baI`uhrLC-65#>uhuh`(Oc6!7PEYvhV&iv8wKP^W-6lXA} zK8kVRj36zcu?By2UOwTbLz5>nh18~Ag2Qjg?3x@Ns^tg_5!pK$%}BtHr@a&=Qf3MOh{aLa+%n^-NBjhM=_dwAAaS8 z+?VgS$SLc`w;DZ}#rVaw*JhwS$k_D%1b-LAcvV~d)`*+-(v~`QPSV5EmVw$c*_O3_ ztgH`Dwohov7<^vxS{cKE!Pdh`*;;I#AaI;vAS=-jS92qwioi}Tcy$I{NYi6GAB~g~ z8YbMd?Ul39?mZwO*vs5rA!lff+{n-Z7MPyTm}*4iMu5!_*a!j9xH#4cgNHid$SmG2 zbgu6?+s8Xb1HxS5#qg_PAP6i(=t7`Z<=lE;hk><5Z`mQ~IGjA8d&!HrJMlC)a&8GF6ptTyF5vVZj&APH?j8_=p_icz+g_XJK;& z8ym2*3+n+6UBKJsTYUa~w{y6gu>_WV3~adk^2@pHw%ho<-+dJyxc&ot$(KBn4}RbS zJnnIiM}&)u9%Xbv(9$?I6DEjQe~>F?ZC8n+yO& zr7F+r0k=RW9-i@N>!gU_lBmbp@a?4NfNYqy{WkDrx-fb!f8%>!ui(6%XRX?47hP>s z>SP}++4#>vhG1@S1ncuddMun7) z={U95G2zU?0UN6rH-Uh_pd-w!hg-EnhK%SiSL4kZ(K&G6Y%&tzI_`{TURJX zurKe8KW)lu^Vj3ZCnBY^yW)l0^9eVbMKHmE$0aQ5K_ncVuoKCUnTLg}G9mi%J zX!JVX)A#HQ$)n|s%rw5jbfQva%uFSwo!;yMmoMfV>jG!`o|CIJD~3!A7Y*=2F5rvi zr?_)A;}_Q*#}UvSkU6Y3;ml4nGQ$k^?&GQFc6s~a!JHkGWxvkEa{KMKbL}w8#s34DBu0>Uc%X(T^@M#0~yw3Pv@QQj3Ko5zyCG)ncbuL^RM`M08X7f%O^ke zDFAl&mwe5$zl1yPx&x8GOlB-48ks+Rc$06x<|5AB_!0Vd-weA8xLe@X1>6l>cMh)V zfsR{u_j#M{a(1zVx$s;$#H}Il;_WT|%k`h-)(?IPp7Lb$l5LJN<4HOPF`7suA`#z9 z2KIE|4`hdDuRqFFo$zh_VUB1D1<72|OMdbSi=jo5zWdkl;*uUS@W#x>!bbMf9jgP8 z*<0q;-u?|*orlZ{P%?0PzsB4;FcY^Q%0(Vl#$e7&DFL-6dNAXVH5bq%+)e1NHG1xs zfTetIb%t2IhD}Hb3?%Mi?k6R5j^z8l;&+&9yc=wm6p~IzcY_IYqR^U4Jhw6vNoQDu zFeqV&>EgTeZ)W9*^*hyc0k(o@I`5Lgdn8?!t-@TDjS%lA>wtL(amQJQ{5K3k+zHen z->If4sv(~^5u>Mw5A6$HG}9wdF-U6&358c0le0hmM)Xj=M};sNsn(zMf&cD|%uH0N zahvzS!(XWfZl>K&U#=)Zly8|%?aoNM+9RnIB5}-;jyFgYU*+7T)lDah(>Ouh-l$(; zxOS34m=#8&aW@oo^Hbet>Cl6Vws9lPqu2Ux-V||~$dr*dWe~LRxzg3IBz7ka)9K%F z(%O41!Q*}UWA9ZJFUQQ-vH2)CZ1LRAPr+Y-&5yk`>Wa}ig_|}}OWoG^bI^0wVuQnj z;PLC@{Cybx7|pg`;ITof85iZfxaaoH!;qvp@=l3T5gsIq{5SPfKJo5 zT`dx2i{`6G^1sB3y)kX(v(Gjkh%zd%yG%>HmW{XG^g>Ocy-6fkt_vStnm?+!{oJ=b zQ`226;a~ilc>|i{w4YVYI)jZr<2DhAg~vwEm^j?WS&nD@ly&+S&wPqI2U(0=otUv9 z)o~PF8FMxQJBtZs6j{hGStsk=Z=()>KDP8(%KG2!N^j3&w%^<9O1!=(uDoBxW&4m~7=bu$DuLsVJ^V6PwORappJ zFq^R*I*@^#zUS1sXRXRYgsm>b448v5=$g3*+sS#q)A#HXFQZqKxyCTrLtWfs+39mx z?0detJI+1pySQ+rgs>gYXZB|^9FdYv^W;Mp^7XS#UUhDVK)jMgfEz#a8E*W{X8^eI z#vA#L@Ax--@ArKlpa0~iR084dyH5acJJ(ejtRvGoSsXdA=X?kn6bnuDf~S z=Y1YG-Sio@5O&km6%5K(Z64zLzU)GH_pNNNHW_Z(hYROG2dDd(0O$z=T-(FVhgl9Q ze!QDA>w3O*=QBJ<5A(L+QXa;=ymG$a&pvr0FS<{7@l(Epo8J7_yyQOR23>P~7b5(X z(kJvfurIGYCae>kW(Fr?CYY0eNLi50GH^4l^a?9YXEFs! zGNII+6lSR?tpaHJNv)Pb20|2Z=OsmWWsnqWm{e#Wv!-9 zOn?wjQOZtP>};PHBH9H(1`rdlnks4rhqc5@=*>8`aVSo~b6m4Jt7G4Vw3%jJ5)Y~4 zNdf~yxfhdyhs-avC_E+d&+|;pI8~>F=DSN1ywat8+N=Ot2v)?kZA_(sWWHBCrC`x0 zXxc2yin|d<>+h{UISQr1gB(!aQ=>g{<8i!8t6nWE8ADe7TRcvt3fMazNK{}o<^22x z!t`44SD3V3sVT3ekCd5ee{4XEjiva!S^v#%591i-sd8Gi;|-OOh|GO?JmSWbxKSRb zjPP8peUS>z7T((Xr@72Hq|`qzv@li9!)SBZ_T$4|eG?wec7q|#pTT1NPmjkNYlV)y zy5!+G2yS)nwJK+ZV>#>FmMLYuhrbQ?En&!0<48Eb&s!6TVrp13jMnh28nbrnTXoe7 zW`$<1V8YR)NfE6@ZYrc>powQB`nC|+nsSXV*P)`gvYOiWo^H#p5%sWo;Mv%u;LFd1 zjaDRvs3IkFR@FjGlb6%!&1n=BZadd^fSfxaQBIi)2ck&4Q`(GG%U4k6gm+VA?HPQj zuBzQD=_9U+bH?L%00xmH`&x-n7K8aF{ZW$~2}VggXohk0Hd@bdEM2ZuajoiGH9t7q z7ELG5Ydv?dUfYKdLzaug64yff49$0Ge(S_PU&iZ4?dopp`0&+&r}6k}9F5_!_Cr&4 zjKd;zecQdO->yAR8&*~s8@wSBpI5S?bg34wJx>s40W6XUU9*sgi_Qy-cIOlS-ITMI zH+q8?qJ~y$r5jU?Fg_U-8+! zeePPu^Lg7Lo|8N`44mzIP-Q#7LSR?pRV8Qoo;@8v2euI|48nF0mO5~v?>V_%v)4z3 zRr_e%X}T3R?;a zIm)MXpEs{ogm47HG1$L1a&G3tJ6saU?%m4oauL@O+3BzH7hdWWVOL!Y|!@BR~Guw{g)EznH(7pW|EC>zMT_2^Lec#2Y=}+Aa!JjyQ3DV>M4b?tA7t5&n$BTyDy^EKmGV zg<7Rcyvz)LSE}?i&Q2U@DCD|PV5Oiah2rTv$TMbg#L!Y`*o;7L2$b*MBU%1gJ7ujG zrN7j#sM?p z3XZ3;>>73Wc04`S;~lGlwi#rb7wyJS>8qu8Kd&{tc-~m^@Dg5IkE8rGIO@4*81U%h zy`g1np3ds9Z;zw4&3ZiT+?F!NyKH4^-WUrNeb;bCh z4=MlCn0%*$6bX~Ob|UFKWXk=K)LI%IgxGl8EQ@&&3*}m}I)mLPydPTr8bcvA4LhChk8=!~zV|GL$jrH4J6Hh5Ay6~6syu47=j>X#pv znU+$G)zh6Ho533;N|ANeRy=wHD})s>lYNdvbK@!aEF8v%iB6q$G@RIT?-^}5P5ZI- zy;r{VREDN}8E;+pKwb2Jwp$pcxnkXy{q;s^2gt^J<3tcWuDQw-7mCkKd4wVW5hW1M zGx}YU4u_8I zE}pAA(?^4`S7i|b8zB<#a!^*p*!N9|Nl%t2=Xzy1#IQz7CbTWWcGoeW?DWd+p!7)r zt#IJJODN&7zKjqJkY1GwyE#{F&e;fo+t+Ju+gsA3%!8!lE0MWgGXy>zBJ=+8zT^Ka zF6KK{H}h4?o@Z}d3jGq+CxH!O@Zb_cPt4Xj2if9}H)edz@+9R3-y{&-eC2b1zpNDUm zKT)`nz;8eHGXBZdDY)w#Jm@m`$h~k&mk_gtZUIALvya||qZh+F_PBYy;_Htt*dflt zMf)qhOfKewhv9F}o#b#A8OT$0&d*%&c>dK*Z(?s5_~1;qTLz+WR|H|nEukqqGbOlI z9nE7E!b)5nk&zEsiLnf>MOiFMb5PhHG~Z8Y49|qLYGJL_H9lJAB>R6FWz&0K1_yv- zxV5H7Y<(Ial_r($RC3`d4hQYo7!(!~GdIVxo8+_15ZB?7B0NF!!I7MtN1}&Q1y-i? zS~-UY599eiwSwj_hlD&iX*~)IJ}ifH6{-}WUyYxFb2WoLtID|*AqugquxC^k9#|_E zaT6_{Bh`X$uViTGX1{lEcH{)2|xqTKxAkKP5_~7_Jt@WSM7eu1eUj zl}{e4gez-5_pN4R+4vGq9^zR|&F_+jGs!yhDo6c6v%hD^eZ_nSW@LDyC&J)1dMO@P zKW{BLXI$qo6nW=Mi7RXJ-2U5UYn5EXMnB1MTyJGAVQd(BL$ih5k3p%8G~9CwJ@)iP zQ+5;~Hqo~q%h3FuVihg~;m& zSTkl?h5PxbGrpIZeTr2dl#Ayb*KBUEkibp*OKw}OP+;yAn#|D1!sGVt0es!^Ha??E zetOvC*~~aSoZzSeq{p6Y&2}P1D~r%E^USANktR5!2h--9 zMoG|$#Dy4Yy&5!U1GP`9TpT16J!>k)o>ptgdjMewyaHuL8Tg>daP%ZAWsOI~C*@&K*6P^)P!x}rf0%I1+D zYcU!R`gj}_81vf-mIC9!ea7pxW-v^)rDzetWB@HDd>+uQqYFaTG@`j8w8qAVX{bl><;l@a)+=bFiV+acT>h$Tc}9% z&K&6ia|x_e*&PP<`XM=H5`M%@S_-A}RA9_5@773KtP1y=&$(uEfhc@tf1le|G4b=< zZyOps6yftSxqwf|9=|c{^3Yy+Q-3iZ9`0a=HBX~MWESghA0`@|M|sckCf=>^ZNp`J z?Qjc!m~v_bF=l1^XNpJw9Z(^L45rVlo1v;XjFv=zgupNinO^3z1@q8xPCH)MulcQ~ zZNugn*jvHz1-x+yrv)y)fPU{jx}D2mYYT?Y!U}plN~d$^?tlkf0k@yz-ZLFvex&1E zqRdX(OY5^AGTvcRUX z+Ad+7nxg3CznOt2PkExJvLo#2-q8eULD_mtlbsb{k$65YVc4&;>Pm}Nx+%2;q6WBH z-}Xtuwo8(<*yv7BT0MuWMQU%AjL*#0MSQYeBpcqb?PWa7h%tC^eHqS3<1I#AnMYGv z%O*~#XU~e*DzjOsgx)gncp(99%Q1OH{f=~oDN5@+=M~QUSe%heqOn1>7`fu=AE4x0 zNLA%AZ04yIIbQe_j1;_k?rU=z@6W46RUC4}ckQvHZlm3ta5z;rmPyDQ@2qQk1>YMi zbvWtNr(Ubgcr&ZDwxlJA$+o6`|6>f>gW7R#4tVGJ2orEy-!;FnHtm_mqkq>Ls_nHR z9)@WZ#+CAXan$FOYDE6tmZ^=fsebEqV$UkxP|eYpUaf8KksUvuD(j!s-^b@cZQlG^ zI{$d`lZqauJ=^U}RIN zx{Z(uCZk!M!WP+hlQi}sC%xy5e7#g~Yo(g~gkPVKD8)a;$S-G%0_iA?Nhyj`xd?$I zm*OaclhKlJ6STlk!j0qa&e5hI`QAuLfa+jZmZ&p0spMsDSERZl(~PTl_qLtgEb_rT zlLk|7w4)`lUNQv=9VDDv-3~Jj%bfeo5249-fj8)iv>C7s0IOeM70i$=c&#@^$~^ZD zmZAZZ5*O8paIBa13?#Y58s>w%xKOucZMS`ySJT(=^>F3A;mSmL`?Q{D55p8^@0xeP z{cXL!0w=pJbT17eTLm;%T?7k^FXt=L3iL%1qm&RYd=DZypZWn0O-Zhd` zGh;LFWmI6df^et{Y=*#qvNyoa5Dkp2&~ahcak%SPBb;2XIkE0p4$7to+o7WqVQ)~* zCU40h32cX$;c!=DHrnM72`i+24|Rbf>HOx-pzPSahX|ny6>}-$FooCe;&>cJMHGcA z77MQ1+CUI)*xTp!)e4b#muD+v3!0QiFz0D|9Y5afAi&Fp3%FnqUbnI05ka_YI0PZE zr+dt{j)MfwoxP9e&6Ye^ws}g|asRO5?FuIkZ!ufI3m1D=a|Mpo}uiyl5!8UYrxN`}s1v2p?SwGU0|6EwMB>toK_l*x`43V1#XgoKRkUi zufOyuykT_@cMt1Kd)2%cR<&d&6JVA$45FcJp(Q4uw9u%N(uR)#SZU10g@_Als{1wi z&$De)-f#xNdE_Wsg;T94Yq}^8Wqgi(j5ODJeHX*2Fl-Ae%J6%Fl+sJgV4FgtBptw4 z*S{I4smnp*CQ)u%+;_h*mHPDK^}E;c92OJLB;(a9SQ!Hj_tlC^!aDvXg}!T9hpBCk zOFKi`BQaFm%`KGzW4Mq)Q|UZw+_*Aa*8-!=W84rd0aFynGw&|Xq$(%ww>PFsol!)J z=R-u^knx+>QBy<5BG^QV)riYM3+_A~^LO96lSvbwDdVnwChoh744@*lN|8UvP;{i9 z>v*GWLaaI2C{^7t%#O;%Ja*%C+!`w$w$?LSj7Fu#XYSRNYwOaoh{rM9 zcnppCj?IKWPYZtRm0FNh@`#U^fKM|0n`hg+z=h*RLog^g!XFi8=b!X)L(xt zvxURj?qRPB5?(5>RlQZIC1wjwI-nndV_ZS1m0T3(fOrhZcxYbW<^`UsNX{rbBYG&e zyTG9k=n$5JaBk>1m$qaMbsZPYW^9Idrt;o(&wcBdKxZ>VLlU9~^IW?8-MpR>U{~Sv zpzN-Pd}w$k!e%EN={mMTU?1hwpzITOs>F5T88gU!9jq3#pd*oMomgd0!8>KsA0_}|@%kF3ve z-MZtycWbU4w)t=2G*9X7#|O^d!_h;>**LP`S*LdSzZ)|&#H)B`5;r`ep&3(z2Z7Dd zaYEpYXYb?PyRDYa+tp=!BRl+uml0?oh zR^f_H>8f=e&DYD=u5v#p`$|bSpZgbwSKG~#(av|qQ9CAw8WTERfajfNSGUYkJwI7^ z+jRn0!eh-j4-#dqXspFm zJU@l|TiP?_SO|%)J3LYpg-DZA-ozHB(tk4VGJcC9ZSzz-F0H4qRoK1f(fV%8P!CZ=lr4P-J}7e|`TRMkYRE zni?BvHSFzXLt9pLY=DpZtSlQxhc-T6rvB~c+{5m1Jla>O4AjzQi<7qRk=%E(rS=?7 zt%)(d^5$7X^S%ucw~0y8#Y{G&=TROMwKuEYnf6m(E_x@k@?0xgH^I?{c^yT}_-lr`32G#4F~GRB&B|k2piBODTx)JXI8+WvGJK2_*@SIC?WrGw!*~hsjij*);csYRteC#@S^ny7RPz&AFo`rs>fe zcdaMU8-#_6jK8-qwBM&Ve*4eEWZ%6fnWn6Lw{oq)nV#)+T?j9gAX}LckycrbX)6;I z6)}yAB?MBI35brBIHw>)Nlo%+6!0xGXwjbCXhLmV0La-1xI`7z)n1uQ) za5g3D(F|sZiLZu4ncRp9aWX5`UlAA20~QOe+L*ID4198LkGt0^I*IoQmWI+|%tAH3 zdxUm;sNd)I{j*3AUeGUiRdNJnnj$Q)yNyoP=BBOu0Z1QLH zJYzlM2lwygwtG*rv9ZCqy*)a@n3$#PXxV?uCyr|oI%eIBc&-EXR!f%sn$JV{OBTQ$ z>kv9wRKGNIidChPizj5r5+|dai**jepj#Hj-e?(G} zCYcBUl46+HcWYy<@vQIwDIUj+Om842teJ7?@fm6Z$P<;g-xf-gYv%TgEm)jNP9YNk zEmwZzcB^$;pO1)Z)cj`!zD`Y03!Q`{l&nk|l@9T4E{b3b2)#yQUWl6nO4{8`T2r+< ztnuuKDM(6^uEBaBp+&SU)ARXH& zYsPuJnlKP~lIBD|l=%^=d5`CYTM;D9H-pKu@78na>m;Mnf~Jhdv2a~WkYB{i*bC`D zMYQ>Giz$qfpJb)K{X4DXx6g`~&l_OgsHlyovR*u_#ekE^{#(W0E9_R*8>)35Wi1xv z*Jyrhtat_4kEhfpi!9j%sgbH!MTZAtNdNixoorqPkIy(amB zU7MA8b}?`zbutx3s|kK<*RCO+2RBxUUOJIv;Dls&i5Zs3&`UBd-kDkWrWr~_T51m6 z9Nc=r!5mA2Xu88v&EW9|YKj*(8hpXTNHhi|>gnR>Ns?@}hh8dVIu^WCH^8#@H&Iub z*YY>ZBPn-!`c>XZ)WwA2;Vi~rZE%_~*%3z1{TWLi%jC~X;xJ`iP^-~;AxRCT@4 zj2yWEMI zJepmI9!>EClOPmFuwqmT(a3ZkwQWdaq>cd##OnvF`iQG~)KIc!NjwX=8DJ{}HbM;H z+)JLweI1yGz_HMAK^K?>;oP9yw_bC)?^zGY`x%5lU~hokeqg1_BE-#%2`!gYXv_m83}&# zY3cP%?v?r z&`l}*Q(h+DW^L$tgJoQ&9b5VC4Tbu-jeG3joih3j7cE}O@4DTx7Ht07xvD*ue%7UG zr@&Zy^~(6B+HBkRu=!`DkNWp`?#IS-tJe8`Wuji8vHFUWF%7r#ajsoUx_n-jQ>=yOEEI-iZyGqc%jO%C^7y`?SV1<&tuZ~fW23RE|84I5`L<<@K~v1 zH@u;dx4Z<<5lgQS4@C+U# zOTXBkkgr{_2%C02+O;mEx$7zXYcN_c9;)?96e;sLqZseexQt%V?7hqU2rq+eV<#JO7=G0Xz8V$|vrHE`HWUIDgC_4m3u{#QPcWJ6>n{Qx97y z2Ofej*Q{)j46;u!8_ve-6)z6s?%P+xacebRt(bw5snR<~=qflS1jW!l z**>qN%L_!C%uU(My7rg5m7CMHV-=yCbX}&i87;X>I|K{sqb7Y)E@6JwuNtM_>n6jg@=erRjNG6ISOID@Q4R50({2DNIS0pUD)aci^6|8z5>$>;H2EBVS0=uO8!L&i6M*~9^QMX7 zJ5_L1{w`(mI@D_Z9MrJ}NDOUr{n#i}{DK)QI(#o5YZ^d7#&x!tUP+BF?HKk=ZAhMn zy~;_)7Kxu+l;K^%X#Y3j6+%1+#Y+39xPog_xy~0RSW@CWpjK=Di(FgFGC=`XZeFd? z-@#ZlcBezPFTjw$4I5!!tTy!Gh1+n?;!>oqSf2?Nd}`UwhjNw$TC$mOq8{0ZYJffSc#78-+03!2(Oz8n!SQ6+pN}5$wu5y?27=cs^Zt^ zn;rXhjF5d5)$7$4!Vyp4(X-2>ry{WT27<&3spj?T`HUd+y!_c8c%#WWPP8|7MaQli9_O zQF_V)RFS37eN(;%)uICskss^@Cz7LPzYEw$=bvT8x|$~JA^J9c?;T{MB4K4kvn#pp zuS!DcK^E`UKPLQx9~Be}a@`%g@5Z%g!P;68v#%jbv68oCp;e!Q6fyMG;N3X~HO?=n z((Vah&KraXLh)|U_1F;&(gH0@lON#ijhomZibm&+YKU{i7!;^rwrscF`aP!Z9;1I1 zt$LVRWA$50IkfhOzt`5&ekR?vNFO(~G*vBVTSx13BTj+qTo)Z_j$Nlar;%B54^5s+oq5OQS0mgR6}CC4dBvp$9bE}|8F zkyY=7czgoyR4G`}Z8(HW7bbSJ@NZk_sxDx$Zk=F7@ZyZ{DKcp-x3vFMqR8yzDJ_T( zx~`VP!I47j?Atg*T%W8QTyuRIIY?!M-Y1r(9R#2Sb21rJa2T;;TC;%Yic`)o%chRMwR!E6z9>nOR-gIck*; zq5M?sZ|c{8O>Zu@(yh64;gT8Ti$fVhPfr{j`0Y1lp6P{jPhDKDs&h?IR#@8v54R0t z(aeioF(v+K9Wexg32zyWzC=xJJM=G{4a0px9K#R+N8+~|V!4DNPpg{r=i1~tyBm!l zSA?i!-k?Zkc19Fv)lWU`I^%5NL1TRCZ2gGCrP8H@+6cSm9PJ!%bODb|_mO z$a%-Lb4uxF=n&%mx(mHoH~#X22gsj-CVOF{8xOSn3b!&svm64&MH{ykscP*gV^6)l zV!8!W$tYp;VnG>yTm6s^nSa}c(s=i>u3Y5&jWX6&Sy<8Xd!=^Fn0|uggkmiF)Ojl` zP1#bzsizH-*|QPGXy_vx0jrWS<{ursvBNX=R1-Q=_8Ts*f8ni;(S&@K+ClA__wlkx zNKueE7oXH}T9jb+nz~B+26GPj&9S^ePQ=3O*vf?z*01O(^Vr-_A672^-J*%5F?sRi z?|Lpygmgg8ghvdz;vmg*fb*B%C$ZNpK}PPeUBN^`R2wieg8kto94EdoBSJ0}%r-8cH+V!?kG zFLZU>lW(TtPc`MMq&ET z#dOKpCD4&~#rsxM@|qQ_KVe=#+9mt3VT|1O4a6D(j7sZ^M^eT`z!y)#6mJU_vM?n| zRH}hVw4NWJDo)gtb+t}9^ZKJ`tWq6`QL46ZJO7!iP@7x@+jfS0tq|t*-2W(TthTN^ zG|;R#b9T&!iUtoE=KI{;ozjmzmgOI%FpuMDfax-t%N=vx+@v^y&cNWj8tlPMaX$ON zYe=JY6|zBT6THHN-w6Mgh+X^O?asd@KCFfDRTNqzQ40(&>( z3D^B9Hpc7BFku8-FFGoKVRLo3C^kCSKFh8zw$eZTq> zS~2JBY+UMm^)yVD6$R~t_Yj2h%FpDe`xt7$4;RpTORKV*^I75(H{=_hMfv6s;h5pa z<~kq&JmZ)w2@+^f5Lp9iEi&mUdV9}W*f!N zKEFswTkmNPw@*k)9Mq0iY+kLg&q_2Q@?TZ&i}_K}Gga-LJ1^)=JE3uD;u-x#&(hePM&6JivTyatlzMRJ^`9SbCD1#9zdX6FXDV6fFS=89 zmh}!7zEzKY;aQJPWmw67E}QpWq7E_p9#cARRARLyAC3BF42Wp{Ohoj-En1mY%L&;I8$ago z(qg|Mm%1!|ecn`Ds}cUOjZIX`P^nvTCl>xUN9L2GTnsS9j`3o7-@FDdw5bDp#Ccb$ zS(r+lPgO$47dd_ut46BTI+sphU+)||+9WTD#UO2X z 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 literal 0 HcmV?d00001 diff --git a/LICENCE b/LICENCE new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/LICENCE @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/40_wf_Lesson - Оператор объединения с NULL.csproj b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/40_wf_Lesson - Оператор объединения с NULL.csproj new file mode 100644 index 0000000..e35440f --- /dev/null +++ b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/40_wf_Lesson - Оператор объединения с NULL.csproj @@ -0,0 +1,12 @@ + + + + WinExe + net6.0-windows + Lesson_40_wf + enable + true + enable + + + \ No newline at end of file diff --git a/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Contacts.cs b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Contacts.cs new file mode 100644 index 0000000..ac7a2c4 --- /dev/null +++ b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Contacts.cs @@ -0,0 +1,8 @@ +namespace Lesson_40_wf +{ + public class Contacts + { + public string PhoneNumber { get; set; } + public string Email { get; set; } + } +} diff --git a/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.Designer.cs b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.Designer.cs new file mode 100644 index 0000000..dfb815c --- /dev/null +++ b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.Designer.cs @@ -0,0 +1,71 @@ +namespace Lesson_40_wf +{ + partial class Form1 + { + ///

+ /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + button1 = new Button(); + listBox1 = new ListBox(); + SuspendLayout(); + // + // button1 + // + button1.Location = new Point(12, 415); + button1.Name = "button1"; + button1.Size = new Size(136, 23); + button1.TabIndex = 0; + button1.Text = "button1"; + button1.UseVisualStyleBackColor = true; + button1.Click += button1_Click; + // + // listBox1 + // + listBox1.FormattingEnabled = true; + listBox1.ItemHeight = 15; + listBox1.Location = new Point(12, 12); + listBox1.Name = "listBox1"; + listBox1.Size = new Size(776, 394); + listBox1.TabIndex = 1; + // + // Form1 + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(listBox1); + Controls.Add(button1); + Name = "Form1"; + Text = "Form1"; + ResumeLayout(false); + } + + #endregion + + private Button button1; + private ListBox listBox1; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.cs b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.cs new file mode 100644 index 0000000..75d0292 --- /dev/null +++ b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.cs @@ -0,0 +1,35 @@ +using System; +using System.Windows.Forms; + +namespace Lesson_40_wf +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + + private List GetPerson() + { + return new List() + { + new Person() {FirstName = "1", MiddleName = "2", SecondName = "3"}, + new Person() {FirstName = "11", MiddleName = "22", SecondName = "33"}, + new Person() {FirstName = "111", MiddleName = "222"}, + new Person() {FirstName = "unknown", Contacts = new Contacts() { PhoneNumber = "1234"} } + }; + } + + private void button1_Click(object sender, EventArgs e) + { + listBox1.Items.Clear(); + var persons = GetPerson(); + + foreach (var person in persons) + { + listBox1.Items.Add($"{person.GetFullName()} | {person.GetPhoneNumber()}"); + } + } + } +} \ No newline at end of file diff --git a/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.resx b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.resx new file mode 100644 index 0000000..a395bff --- /dev/null +++ b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Person.cs b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Person.cs new file mode 100644 index 0000000..b31b4f0 --- /dev/null +++ b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Person.cs @@ -0,0 +1,21 @@ +namespace Lesson_40_wf +{ + public class Person + { + public string FirstName { get; set; } + public string MiddleName { get; set; } + public string SecondName { get; set; } + + public Contacts Contacts { get; set; } + + public string GetFullName() + { + return $"Фамилия: {FirstName ?? "нет данных"} | Имя: {MiddleName ?? "нет данных"} | Отчество: {SecondName ?? "нет данных"}"; + } + + public string GetPhoneNumber() + { + return $"Phone Number: {Contacts?.PhoneNumber ?? "нет данных"}"; + } + } +} diff --git a/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Program.cs b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Program.cs new file mode 100644 index 0000000..b2afc2b --- /dev/null +++ b/LessonsAndTasks/40_wf_Lesson - Оператор объединения с NULL/Program.cs @@ -0,0 +1,17 @@ +namespace Lesson_40_wf +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + Application.Run(new Form1()); + } + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Benchmark/81_81B_84_Benchmark.csproj b/LessonsAndTasks/Benchmark/81_81B_84_Benchmark.csproj new file mode 100644 index 0000000..66b147c --- /dev/null +++ b/LessonsAndTasks/Benchmark/81_81B_84_Benchmark.csproj @@ -0,0 +1,18 @@ + + + + Exe + net5.0 + + + + + + + + + + + + + diff --git a/LessonsAndTasks/Benchmark/MyParserBenchmark.cs b/LessonsAndTasks/Benchmark/MyParserBenchmark.cs new file mode 100644 index 0000000..8c18511 --- /dev/null +++ b/LessonsAndTasks/Benchmark/MyParserBenchmark.cs @@ -0,0 +1,47 @@ +using BenchmarkDotNet.Attributes; + +[MemoryDiagnoser]//по мимо быстродействия тестируем использование памяти +[RankColumn]//добавляет оценку для тестируемых методов (на основании бенчмарка) - чтобы понять какой метод лучше (не обязательно) +public class MyParserBenchmark +{ + private const string STRING_TO_PARSE_WITH_ERROR = "qwerty22"; + private const string STRING_TO_PARSE = "54"; + + private readonly MyParser _myParser = new MyParser(); + + [Benchmark]//метка что именно эти методы мы хотим тестировать + public void TryCathParseTestWithError() + { + int result = _myParser.TryCathParse(STRING_TO_PARSE_WITH_ERROR); + } + + [Benchmark]//метка что именно эти методы мы хотим тестировать + public void TryParseTestWithError() + { + int result = _myParser.TryParse(STRING_TO_PARSE_WITH_ERROR); + } + + [Benchmark]//метка что именно эти методы мы хотим тестировать + public void TryCathParseTest() + { + int result = _myParser.TryCathParse(STRING_TO_PARSE); + } + + [Benchmark]//метка что именно эти методы мы хотим тестировать + public void TryParseTest() + { + int result = _myParser.TryParse(STRING_TO_PARSE); + } + + [Benchmark]//метка что именно эти методы мы хотим тестировать + public void TryParseFixedTestWithError() + { + int result = _myParser.TryParseFixed(STRING_TO_PARSE_WITH_ERROR); + } + + [Benchmark]//метка что именно эти методы мы хотим тестировать + public void TryParseFixedTest() + { + int result = _myParser.TryParseFixed(STRING_TO_PARSE); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Benchmark/Program.cs b/LessonsAndTasks/Benchmark/Program.cs new file mode 100644 index 0000000..657050d --- /dev/null +++ b/LessonsAndTasks/Benchmark/Program.cs @@ -0,0 +1,222 @@ +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Columns; +using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Loggers; +using BenchmarkDotNet.Running; +using BenchmarkDotNet.Validators; +using System.Collections; +using System.Collections.Generic; + +[MemoryDiagnoser] +[RankColumn] +public class Benchmark_1 +{ + [Benchmark] + public void StructTest() + { + StructPoint structPoint = new StructPoint() + { + X = 1, + Y = 2 + }; + var result = structPoint.X = structPoint.Y; + } + + [Benchmark] + public void ClassTest() + { + ClassPoint classPoint = new ClassPoint() + { + X = 1, + Y = 2 + }; + var result = classPoint.X = classPoint.Y; + } +} + +[MemoryDiagnoser] +[RankColumn] +public class Benchmark_2 +{ + [Benchmark] + public void StructArrayTest() + { + var structPoints = new StructPoint[100]; + // частично находится в куче + // в массиве через каждый интервал который отвечает + // размеру минимального элемента находятся реальные данные структуры + // разница в быстродействии в том, что мы выделяем память в управляемой куче лишь единожды для массива структур + for (int i = 0; i < structPoints.Length; i++) + { + structPoints[i] = new StructPoint(); + } + } + + [Benchmark] + public void ClassArrayTest() + { + // в начале в куче создается сам массив + // но для каждого объекта класса есть ссылка которую мы помещаем в массив и по каждой ссылке нужно запросить данные из кучи + ClassPoint[] classPoints = new ClassPoint[100]; + // в массиве находятся не реальные данные а ссылки на данные + for (int i = 0; i < classPoints.Length; i++) + { + classPoints[i] = new ClassPoint(); + } + } +} + +[MemoryDiagnoser] +[RankColumn] +public class Benchmark_3 +{ + struct MyStruct + { + public decimal MyProperty1 { get; set; } + public decimal MyProperty2 { get; set; } + public decimal MyProperty3 { get; set; } + public decimal MyProperty4 { get; set; } + public decimal MyProperty5 { get; set; } + public decimal MyProperty6 { get; set; } + public decimal MyProperty7 { get; set; } + public decimal MyProperty8 { get; set; } + public decimal MyProperty9 { get; set; } + public decimal MyProperty10 { get; set; } + } + + class MyClass + { + public decimal MyProperty1 { get; set; } + public decimal MyProperty2 { get; set; } + public decimal MyProperty3 { get; set; } + public decimal MyProperty4 { get; set; } + public decimal MyProperty5 { get; set; } + public decimal MyProperty6 { get; set; } + public decimal MyProperty7 { get; set; } + public decimal MyProperty8 { get; set; } + public decimal MyProperty9 { get; set; } + public decimal MyProperty10 { get; set; } + } + + private MyStruct _myStruct = new MyStruct(); + private MyClass _myClass = new MyClass(); + + private void Foo(MyClass myClass) + { + var t = myClass.MyProperty1 + myClass.MyProperty2; + } + + private void Bar(MyStruct myStruct) + { + var t = myStruct.MyProperty1 + myStruct.MyProperty2; + } + + private void BarIn(in MyStruct myStruct) + { + var t = myStruct.MyProperty1 + myStruct.MyProperty2; + } + + [Benchmark] + public void StructTest() + { + Bar(_myStruct); + } + + [Benchmark] + public void StructTestIn() + { + BarIn(_myStruct); + } + + [Benchmark] + public void ClassTest() + { + Foo(_myClass); + } +} + +[MemoryDiagnoser] +[RankColumn] +public class Benchmark_4 +{ + [Benchmark] + public void NoBoxing() + { + int res = 0; + double a = 1; + res += (int)a; + } + + [Benchmark] + public void Boxing() + { + int res = 0; + object a = 1; + res += (int)a; + } +} + +[MemoryDiagnoser] +[RankColumn] +public class Benchmark_5 +{ + [Benchmark] + public void Swaps() // 4ns + { + object a = 5; + object b = 1; + SwapTestClass.Swap(ref a, ref b); + } + + [Benchmark] + public void GenericSwaps() // 0ns + { + double p1 = 5; + double p2 = 1; + SwapTestClass.GenericSwap(ref p1, ref p2); + } +} + +[MemoryDiagnoser] +[RankColumn] +public class Benchmark_6 +{ + [Benchmark] + public void ArrayListBench() + { + var arrayList = new ArrayList(); + for (int el = 0; el < 1000; el++) + { + arrayList.Add(el); + } + } + + [Benchmark] + public void ListBench() + { + var _list = new List(); + for (int el = 0; el < 1000; el++) + { + _list.Add(el); + } + } +} + +class Program +{ + static void Main(string[] args) + { + //BenchmarkRunner.Run(); + //BenchmarkRunner.Run(); + //BenchmarkRunner.Run(); + //BenchmarkRunner.Run(); + //BenchmarkRunner.Run(); + var config = new ManualConfig() + .WithOptions(ConfigOptions.DisableOptimizationsValidator) + .AddValidator(JitOptimizationsValidator.DontFailOnError) + .AddLogger(ConsoleLogger.Default) + .AddColumnProvider(DefaultColumnProviders.Instance); + + BenchmarkRunner.Run(config); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа.sln b/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа.sln new file mode 100644 index 0000000..56ff680 --- /dev/null +++ b/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1738 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson 1 - Первая программа", "Lesson 1 - Первая программа\Lesson 1 - Первая программа.csproj", "{BEC8AD79-F534-495C-B1AD-C63EFDCCA555}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BEC8AD79-F534-495C-B1AD-C63EFDCCA555}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BEC8AD79-F534-495C-B1AD-C63EFDCCA555}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BEC8AD79-F534-495C-B1AD-C63EFDCCA555}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BEC8AD79-F534-495C-B1AD-C63EFDCCA555}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {CACE873A-C210-4B83-A3DA-2C506D7FE3BB} + EndGlobalSection +EndGlobal diff --git a/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/01_Lesson - Первая программа.csproj b/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/01_Lesson - Первая программа.csproj new file mode 100644 index 0000000..1d4b636 --- /dev/null +++ b/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/01_Lesson - Первая программа.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {BEC8AD79-F534-495C-B1AD-C63EFDCCA555} + Exe + Lesson_1___Первая_программа + Lesson 1 - Первая программа + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/App.config b/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/Program.cs b/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/Program.cs new file mode 100644 index 0000000..35ee26c --- /dev/null +++ b/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/Program.cs @@ -0,0 +1,15 @@ +using System; + +/* + * Структура проекта + * Структура и порядок выполнения программы + */ +class Program +{ + static void Main() // Точка входа + { + Console.WriteLine("Hello World"); // Ctr + F5 - Запуск без отладки + Console.WriteLine("Привет мир"); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6ff1581 --- /dev/null +++ b/LessonsAndTasks/Lesson 1 - Первая программа/Lesson 1 - Первая программа/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 1 - Первая программа")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 1 - Первая программа")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("bec8ad79-f534-495c-b1ad-c63efdcca555")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении.sln b/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении.sln new file mode 100644 index 0000000..f531bb6 --- /dev/null +++ b/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1738 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson 10 - Несколько проектов в одном решении", "Lesson 10 - Несколько проектов в одном решении\Lesson 10 - Несколько проектов в одном решении.csproj", "{A7E7EEDE-05D5-4467-B092-5AACE88F5A90}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyProject", "MyProject\MyProject.csproj", "{4D2AA99E-1047-4F82-B26A-7C581217CC99}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A7E7EEDE-05D5-4467-B092-5AACE88F5A90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A7E7EEDE-05D5-4467-B092-5AACE88F5A90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A7E7EEDE-05D5-4467-B092-5AACE88F5A90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A7E7EEDE-05D5-4467-B092-5AACE88F5A90}.Release|Any CPU.Build.0 = Release|Any CPU + {4D2AA99E-1047-4F82-B26A-7C581217CC99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4D2AA99E-1047-4F82-B26A-7C581217CC99}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D2AA99E-1047-4F82-B26A-7C581217CC99}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4D2AA99E-1047-4F82-B26A-7C581217CC99}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2247B2F0-9EFD-4C61-BC0F-F73ECE8A9381} + EndGlobalSection +EndGlobal diff --git a/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/10_Lesson - Несколько проектов в одном решении.csproj b/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/10_Lesson - Несколько проектов в одном решении.csproj new file mode 100644 index 0000000..d9ce629 --- /dev/null +++ b/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/10_Lesson - Несколько проектов в одном решении.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {A7E7EEDE-05D5-4467-B092-5AACE88F5A90} + Exe + Lesson_10___Несколько_проектов_в_одном_решении + Lesson 10 - Несколько проектов в одном решении + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/App.config b/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/Program.cs b/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/Program.cs new file mode 100644 index 0000000..eb123fd --- /dev/null +++ b/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/Program.cs @@ -0,0 +1,14 @@ +using System; + +/* + * Несколько проектов в одном решении + * Просто добавляем проект в решение и всё :) + */ +class Program +{ + static void Main() + { + Console.WriteLine("Hello World from Lesson 10"); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d017072 --- /dev/null +++ b/LessonsAndTasks/Lesson 10 - Несколько проектов в одном решении/Lesson 10 - Несколько проектов в одном решении/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 10 - Несколько проектов в одном решении")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 10 - Несколько проектов в одном решении")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("a7e7eede-05d5-4467-b092-5aace88f5a90")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/11_Lesson - Инкремент и декремент. Постфиксный и префиксный.csproj b/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/11_Lesson - Инкремент и декремент. Постфиксный и префиксный.csproj new file mode 100644 index 0000000..f74bad0 --- /dev/null +++ b/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/11_Lesson - Инкремент и декремент. Постфиксный и префиксный.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {3D82C6D9-EFBC-4F51-9A40-76D19265D814} + Exe + Lesson_11___Инкремент_и_декремент.Постфиксный_и_префиксный + Lesson_11___Инкремент_и_декремент.Постфиксный_и_префиксный + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/App.config b/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/Program.cs b/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/Program.cs new file mode 100644 index 0000000..81c7124 --- /dev/null +++ b/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/Program.cs @@ -0,0 +1,24 @@ +using System; + +/* + * Инкремент и декремент. Постфиксный и префиксный. + */ +class Program +{ + static void Main() + { + int a = 0; + int b = 1; + + a++; // Постфиксная - Сначала выведется переменная до инкремента а потом после него + --a; // Префиксная - Сначала сработает увеличение переменной а результат выведется в консоль + a--; + a--; + + b = ++b * b; + + Console.WriteLine(a); + Console.WriteLine(b); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4121ace --- /dev/null +++ b/LessonsAndTasks/Lesson 11 - Инкремент и декремент. Постфиксный и префиксный/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 11 - Инкремент и декремент. Постфиксный и префиксный")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 11 - Инкремент и декремент. Постфиксный и префиксный")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("3d82c6d9-efbc-4f51-9a40-76d19265d814")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/12_Lesson - Операторы сравнения. Операции сравнения.csproj b/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/12_Lesson - Операторы сравнения. Операции сравнения.csproj new file mode 100644 index 0000000..bcc875d --- /dev/null +++ b/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/12_Lesson - Операторы сравнения. Операции сравнения.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {C3CDCFE1-7C6D-4122-9C0B-F82FAB30999E} + Exe + Lesson_12___Операторы_сравнения.Операции_сравнения + Lesson_12___Операторы_сравнения.Операции_сравнения + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/App.config b/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/Program.cs b/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/Program.cs new file mode 100644 index 0000000..2f3aa76 --- /dev/null +++ b/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/Program.cs @@ -0,0 +1,35 @@ +using System; + +/* + * Операторы отношений. + * Операции сравнения. + */ + +/* + == Равно + != Не равно + > Больше + < Меньше + >= Больше или равно + <= Меньше или равно +*/ +class Program +{ + static void Main() + { + int a = 5, b = 4; + bool result0 = a == b; + bool result1 = a != b; + bool result2 = a > b; + bool result3 = a < b; + bool result4 = a <= b; + bool result5 = a >= b; + Console.WriteLine(result0 + Environment.NewLine + + result1 + Environment.NewLine + + result2 + Environment.NewLine + + result3 + Environment.NewLine + + result4 + Environment.NewLine + + result5 + Environment.NewLine); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..748aa6d --- /dev/null +++ b/LessonsAndTasks/Lesson 12 - Операторы сравнения. Операции сравнения/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 12 - Операторы сравнения. Операции сравнения")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 12 - Операторы сравнения. Операции сравнения")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("c3cdcfe1-7c6d-4122-9c0b-f82fab30999e")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 13 - Конструкция if else/13_Lesson - Конструкция if else.csproj b/LessonsAndTasks/Lesson 13 - Конструкция if else/13_Lesson - Конструкция if else.csproj new file mode 100644 index 0000000..c23db91 --- /dev/null +++ b/LessonsAndTasks/Lesson 13 - Конструкция if else/13_Lesson - Конструкция if else.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {AB913711-B99C-4D68-B9EF-6D66C437F97A} + Exe + Lesson_13___Конструкция_if_else + Lesson 13 - Конструкция if else + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 13 - Конструкция if else/App.config b/LessonsAndTasks/Lesson 13 - Конструкция if else/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 13 - Конструкция if else/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 13 - Конструкция if else/Program.cs b/LessonsAndTasks/Lesson 13 - Конструкция if else/Program.cs new file mode 100644 index 0000000..416fd48 --- /dev/null +++ b/LessonsAndTasks/Lesson 13 - Конструкция if else/Program.cs @@ -0,0 +1,46 @@ +using System; + +/* + * Конструкция if else + if(утверждение или выражение) + { + действие 1; + } + else + { + действие 2; + } +*/ +class Program +{ + static void Main() + { + bool isInfected = true; + + if (isInfected) // утверждение + { + Console.WriteLine("Персонаж инфицирован!"); + } + else + { + Console.WriteLine("Персонаж не инфицирован!"); + } + + int a; + + int.TryParse(Console.ReadLine(), out a); + + if (a == 5) // выражение + { + Console.WriteLine("a равно 5"); + } + else + { + Console.WriteLine("a не равно 5"); + } + + //#Свой аналог + Console.WriteLine(isInfected ? "Персонаж инфицирован!" : "Персонаж не инфицирован!"); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 13 - Конструкция if else/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 13 - Конструкция if else/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..8f57762 --- /dev/null +++ b/LessonsAndTasks/Lesson 13 - Конструкция if else/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 13 - Конструкция if else")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 13 - Конструкция if else")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("ab913711-b99c-4d68-b9ef-6d66c437f97a")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/14_Lesson - Сокращённые логические операции. Логические операторы.csproj b/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/14_Lesson - Сокращённые логические операции. Логические операторы.csproj new file mode 100644 index 0000000..0f328cf --- /dev/null +++ b/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/14_Lesson - Сокращённые логические операции. Логические операторы.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {668DAC0A-01C5-4DD0-ACF3-0D4E9485F449} + Exe + Lesson_14___Сокращённые_логические_операции.Логические_операторы + Lesson_14___Сокращённые_логические_операции.Логические_операторы + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/App.config b/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/Program.cs b/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/Program.cs new file mode 100644 index 0000000..7056c43 --- /dev/null +++ b/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/Program.cs @@ -0,0 +1,109 @@ +using System; + +/* Логические операторы + * + * && Сокращённое И + * || Сокращённое ИЛИ + * & И + * | ИЛИ + * ! НЕ(унарный) + */ +class Program +{ + static void Main() + { + bool isInfected = true; + + if (isInfected) + { + Console.WriteLine("[bool] Персонаж инфицирован!"); + } + else + { + Console.WriteLine("[bool] Персонаж здоров!"); + } + + // Оператор "!" + isInfected = false; + if (!isInfected) + { + Console.WriteLine("[!] Персонаж здоров!"); + } + else + { + Console.WriteLine("[!] Персонаж инфицирован!"); + } + + // Не проверяет условия если одно уже равно необходимому значению + // Оператор "&&" + bool isHighTemperature = true; + + bool hasNoColing = true; + + if (isHighTemperature && hasNoColing) + { + Console.WriteLine("[&&] Угроза повреждения процессора!!!"); + } + + // Оператор "||" + isHighTemperature = false; + + hasNoColing = true; + + if (isHighTemperature || hasNoColing) + { + Console.WriteLine("[||] Угроза повреждения процессора!!!"); + } + + // Проверяет всегда оба выражения в условии + // Оператор "&" + isHighTemperature = true; + + hasNoColing = true; + + if (isHighTemperature & hasNoColing) + { + Console.WriteLine("[&] Угроза повреждения процессора!!!"); + } + + // Оператор "|" + isHighTemperature = false; + + hasNoColing = true; + + if (isHighTemperature | hasNoColing) + { + Console.WriteLine("[|] Угроза повреждения процессора!!!"); + } + + // Разница работы операторов в отладчике + // GetCoolingStatus = true, GetTemperatue = true + if (GetTemperatue() | GetCoolingStatus()) + { + Console.WriteLine("[|] Угроза повреждения процессора!!!"); + } + if (GetTemperatue() || GetCoolingStatus()) + { + Console.WriteLine("[|] Угроза повреждения процессора!!!"); + } + if (GetTemperatue() & GetCoolingStatus()) + { + Console.WriteLine("[&] Угроза повреждения процессора!!!"); + } + if (GetTemperatue() && GetCoolingStatus()) + { + Console.WriteLine("[&&] Угроза повреждения процессора!!!"); + } + Console.ReadKey(); + } + + private static bool GetCoolingStatus() + { + return true; + } + + private static bool GetTemperatue() + { + return true; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..5abef56 --- /dev/null +++ b/LessonsAndTasks/Lesson 14 - Сокращённые логические операции. Логические операторы/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные с этой сборкой. +[assembly: AssemblyTitle("Lesson 14 - Сокращённые логические операции. Логические операторы")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 14 - Сокращённые логические операции. Логические операторы")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM +[assembly: Guid("668dac0a-01c5-4dd0-acf3-0d4e9485f449")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/15_Lesson - Условный оператор множественного выбора switch.csproj b/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/15_Lesson - Условный оператор множественного выбора switch.csproj new file mode 100644 index 0000000..68818d6 --- /dev/null +++ b/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/15_Lesson - Условный оператор множественного выбора switch.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {ACE8ABDC-0D05-4963-AFD8-CFF298A85A9C} + Exe + Lesson_15___Условный_оператор_множественного_выбора_switch + Lesson 15 - Условный оператор множественного выбора switch + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/App.config b/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/Program.cs b/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/Program.cs new file mode 100644 index 0000000..43be335 --- /dev/null +++ b/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/Program.cs @@ -0,0 +1,339 @@ +using System; + +/* + * Условный оператор множественного выбора switch(переключатель) + */ +class Program +{ + static void Main() + { + int a = int.Parse(Console.ReadLine()); + switch (a) + { + case 1: + { + Console.WriteLine("Вы ввели число 1"); + Console.WriteLine("Ура"); + } + break; + case 2: + case 3: + Console.WriteLine("Вы ввели число 2 или 3"); + break; + default: + Console.WriteLine("Не знаю"); + break; + } + + string s = Console.ReadLine(); + switch (s) + { + case "+": + Console.WriteLine("Вы ввели плюс"); + break; + case "-": + Console.WriteLine("Вы ввели минус"); + break; + default: + break; + } + + ConsoleKey consoleKey = Console.ReadKey().Key; + + switch (consoleKey) + { + case ConsoleKey.Backspace: + Console.WriteLine("Вы нажали Backspace"); + break; + case ConsoleKey.Tab: + break; + case ConsoleKey.Clear: + break; + case ConsoleKey.Enter: + break; + case ConsoleKey.Pause: + break; + case ConsoleKey.Escape: + break; + case ConsoleKey.Spacebar: + break; + case ConsoleKey.PageUp: + break; + case ConsoleKey.PageDown: + break; + case ConsoleKey.End: + break; + case ConsoleKey.Home: + break; + case ConsoleKey.LeftArrow: + break; + case ConsoleKey.UpArrow: + break; + case ConsoleKey.RightArrow: + break; + case ConsoleKey.DownArrow: + break; + case ConsoleKey.Select: + break; + case ConsoleKey.Print: + break; + case ConsoleKey.Execute: + break; + case ConsoleKey.PrintScreen: + break; + case ConsoleKey.Insert: + break; + case ConsoleKey.Delete: + break; + case ConsoleKey.Help: + break; + case ConsoleKey.D0: + break; + case ConsoleKey.D1: + break; + case ConsoleKey.D2: + break; + case ConsoleKey.D3: + break; + case ConsoleKey.D4: + break; + case ConsoleKey.D5: + break; + case ConsoleKey.D6: + break; + case ConsoleKey.D7: + break; + case ConsoleKey.D8: + break; + case ConsoleKey.D9: + break; + case ConsoleKey.A: + break; + case ConsoleKey.B: + break; + case ConsoleKey.C: + break; + case ConsoleKey.D: + break; + case ConsoleKey.E: + break; + case ConsoleKey.F: + break; + case ConsoleKey.G: + break; + case ConsoleKey.H: + break; + case ConsoleKey.I: + break; + case ConsoleKey.J: + break; + case ConsoleKey.K: + break; + case ConsoleKey.L: + break; + case ConsoleKey.M: + break; + case ConsoleKey.N: + break; + case ConsoleKey.O: + break; + case ConsoleKey.P: + break; + case ConsoleKey.Q: + break; + case ConsoleKey.R: + break; + case ConsoleKey.S: + break; + case ConsoleKey.T: + break; + case ConsoleKey.U: + break; + case ConsoleKey.V: + break; + case ConsoleKey.W: + break; + case ConsoleKey.X: + break; + case ConsoleKey.Y: + break; + case ConsoleKey.Z: + break; + case ConsoleKey.LeftWindows: + break; + case ConsoleKey.RightWindows: + break; + case ConsoleKey.Applications: + break; + case ConsoleKey.Sleep: + break; + case ConsoleKey.NumPad0: + break; + case ConsoleKey.NumPad1: + break; + case ConsoleKey.NumPad2: + break; + case ConsoleKey.NumPad3: + break; + case ConsoleKey.NumPad4: + break; + case ConsoleKey.NumPad5: + break; + case ConsoleKey.NumPad6: + break; + case ConsoleKey.NumPad7: + break; + case ConsoleKey.NumPad8: + break; + case ConsoleKey.NumPad9: + break; + case ConsoleKey.Multiply: + break; + case ConsoleKey.Add: + break; + case ConsoleKey.Separator: + break; + case ConsoleKey.Subtract: + break; + case ConsoleKey.Decimal: + break; + case ConsoleKey.Divide: + break; + case ConsoleKey.F1: + break; + case ConsoleKey.F2: + break; + case ConsoleKey.F3: + break; + case ConsoleKey.F4: + break; + case ConsoleKey.F5: + break; + case ConsoleKey.F6: + break; + case ConsoleKey.F7: + break; + case ConsoleKey.F8: + break; + case ConsoleKey.F9: + break; + case ConsoleKey.F10: + break; + case ConsoleKey.F11: + break; + case ConsoleKey.F12: + break; + case ConsoleKey.F13: + break; + case ConsoleKey.F14: + break; + case ConsoleKey.F15: + break; + case ConsoleKey.F16: + break; + case ConsoleKey.F17: + break; + case ConsoleKey.F18: + break; + case ConsoleKey.F19: + break; + case ConsoleKey.F20: + break; + case ConsoleKey.F21: + break; + case ConsoleKey.F22: + break; + case ConsoleKey.F23: + break; + case ConsoleKey.F24: + break; + case ConsoleKey.BrowserBack: + break; + case ConsoleKey.BrowserForward: + break; + case ConsoleKey.BrowserRefresh: + break; + case ConsoleKey.BrowserStop: + break; + case ConsoleKey.BrowserSearch: + break; + case ConsoleKey.BrowserFavorites: + break; + case ConsoleKey.BrowserHome: + break; + case ConsoleKey.VolumeMute: + break; + case ConsoleKey.VolumeDown: + break; + case ConsoleKey.VolumeUp: + break; + case ConsoleKey.MediaNext: + break; + case ConsoleKey.MediaPrevious: + break; + case ConsoleKey.MediaStop: + break; + case ConsoleKey.MediaPlay: + break; + case ConsoleKey.LaunchMail: + break; + case ConsoleKey.LaunchMediaSelect: + break; + case ConsoleKey.LaunchApp1: + break; + case ConsoleKey.LaunchApp2: + break; + case ConsoleKey.Oem1: + break; + case ConsoleKey.OemPlus: + break; + case ConsoleKey.OemComma: + break; + case ConsoleKey.OemMinus: + break; + case ConsoleKey.OemPeriod: + break; + case ConsoleKey.Oem2: + break; + case ConsoleKey.Oem3: + break; + case ConsoleKey.Oem4: + break; + case ConsoleKey.Oem5: + break; + case ConsoleKey.Oem6: + break; + case ConsoleKey.Oem7: + break; + case ConsoleKey.Oem8: + break; + case ConsoleKey.Oem102: + break; + case ConsoleKey.Process: + break; + case ConsoleKey.Packet: + break; + case ConsoleKey.Attention: + break; + case ConsoleKey.CrSel: + break; + case ConsoleKey.ExSel: + break; + case ConsoleKey.EraseEndOfFile: + break; + case ConsoleKey.Play: + break; + case ConsoleKey.Zoom: + break; + case ConsoleKey.NoName: + break; + case ConsoleKey.Pa1: + break; + case ConsoleKey.OemClear: + break; + default: + break; + } + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7a5bdc6 --- /dev/null +++ b/LessonsAndTasks/Lesson 15 - Условный оператор множественного выбора switch/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные с этой сборкой. +[assembly: AssemblyTitle("Lesson 15 - Условный оператор множественного выбора switch")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 15 - Условный оператор множественного выбора switch")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM +[assembly: Guid("ace8abdc-0d05-4963-afd8-cff298a85a9c")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 16 - Цикл while/16_Lesson - Цикл while.csproj b/LessonsAndTasks/Lesson 16 - Цикл while/16_Lesson - Цикл while.csproj new file mode 100644 index 0000000..0eb0e27 --- /dev/null +++ b/LessonsAndTasks/Lesson 16 - Цикл while/16_Lesson - Цикл while.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {8FCFD429-4E9C-4B5D-B3C5-CF398BD0F3F2} + Exe + Lesson_16___Цикл_while + Lesson 16 - Цикл while + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 16 - Цикл while/App.config b/LessonsAndTasks/Lesson 16 - Цикл while/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 16 - Цикл while/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 16 - Цикл while/Program.cs b/LessonsAndTasks/Lesson 16 - Цикл while/Program.cs new file mode 100644 index 0000000..a00279f --- /dev/null +++ b/LessonsAndTasks/Lesson 16 - Цикл while/Program.cs @@ -0,0 +1,19 @@ +using System; + +/* + * Цикл while + */ +class Program +{ + static void Main() + { + int count = 0; + int.TryParse(Console.ReadLine(), out int limit); + while (count < limit) + { + count++; + Console.WriteLine($"{count} Выполняем действия"); + } + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 16 - Цикл while/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 16 - Цикл while/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2c4d708 --- /dev/null +++ b/LessonsAndTasks/Lesson 16 - Цикл while/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 16 - Цикл while")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 16 - Цикл while")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("8fcfd429-4e9c-4b5d-b3c5-cf398bd0f3f2")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 17 - Цикл do while/17_Lesson - Цикл do while.csproj b/LessonsAndTasks/Lesson 17 - Цикл do while/17_Lesson - Цикл do while.csproj new file mode 100644 index 0000000..0604b8f --- /dev/null +++ b/LessonsAndTasks/Lesson 17 - Цикл do while/17_Lesson - Цикл do while.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {60AE567A-7D98-47A8-BBA3-74DC52A32BC8} + Exe + Lesson_17___Цикл_do_while + Lesson 17 - Цикл do while + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 17 - Цикл do while/App.config b/LessonsAndTasks/Lesson 17 - Цикл do while/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 17 - Цикл do while/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 17 - Цикл do while/Program.cs b/LessonsAndTasks/Lesson 17 - Цикл do while/Program.cs new file mode 100644 index 0000000..6c3de24 --- /dev/null +++ b/LessonsAndTasks/Lesson 17 - Цикл do while/Program.cs @@ -0,0 +1,25 @@ +using System; + +/* + * Цикл do while + * Всегда выполняется один раз + * даже если условие цикла не выполянется + */ +class Program +{ + static void Main() + { + int count = 5; + while (count < 5) + { + count++; + Console.WriteLine($"{count} Действие"); + } + do + { + count++; + Console.WriteLine($"{count} Действие"); + } while (count < 5); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 17 - Цикл do while/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 17 - Цикл do while/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7beb665 --- /dev/null +++ b/LessonsAndTasks/Lesson 17 - Цикл do while/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 17 - Цикл do while")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 17 - Цикл do while")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("60ae567a-7d98-47a8-bba3-74dc52a32bc8")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 18 - Цикл for/18_Lesson - Цикл for.csproj b/LessonsAndTasks/Lesson 18 - Цикл for/18_Lesson - Цикл for.csproj new file mode 100644 index 0000000..8df9037 --- /dev/null +++ b/LessonsAndTasks/Lesson 18 - Цикл for/18_Lesson - Цикл for.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {608C0926-91C6-4B0C-B6BF-4AE25688AB70} + Exe + Lesson_18___Цикл_for + Lesson 18 - Цикл for + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 18 - Цикл for/App.config b/LessonsAndTasks/Lesson 18 - Цикл for/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 18 - Цикл for/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 18 - Цикл for/Program.cs b/LessonsAndTasks/Lesson 18 - Цикл for/Program.cs new file mode 100644 index 0000000..41f311e --- /dev/null +++ b/LessonsAndTasks/Lesson 18 - Цикл for/Program.cs @@ -0,0 +1,26 @@ +using System; + +/* + * Цикл for + */ +class Program +{ + private static int count; + + static void Main() + { + //Переменная count в счетчике существует только внутри цикла + for (byte count = 0; count < 10; count++) + { + Console.WriteLine(count); + } + + //Переменная count объявляется вне цикла и существует вне зависимости от положения цикла в коде + while (count < 10) + { + count++; + Console.WriteLine(count); + } + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 18 - Цикл for/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 18 - Цикл for/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ec3efe4 --- /dev/null +++ b/LessonsAndTasks/Lesson 18 - Цикл for/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 18 - Цикл for")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 18 - Цикл for")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("608c0926-91c6-4b0c-b6bf-4ae25688ab70")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/19_Lesson - Цикл for в обратном порядке.csproj b/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/19_Lesson - Цикл for в обратном порядке.csproj new file mode 100644 index 0000000..97d7148 --- /dev/null +++ b/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/19_Lesson - Цикл for в обратном порядке.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {EE26A5F9-9C69-470B-94C4-7F7DE42215B1} + Exe + Lesson_19___Цикл_for_в_обратном_порядке + Lesson 19 - Цикл for в обратном порядке + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/App.config b/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/Program.cs b/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/Program.cs new file mode 100644 index 0000000..ad2b1ff --- /dev/null +++ b/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/Program.cs @@ -0,0 +1,69 @@ +using System; + +/* + * $1 Цикл for особенности + * $2 нескольок переменных + * $3 Цикл for в обратном порядке + * $4 несколько условий + */ +class Program +{ + static void Main() + { + #region $1 + int limit = int.Parse(Console.ReadLine()); + + for (int i = 1; i <= limit; i++) + { + Console.WriteLine(i); + } + + for (; ; ) + { + Console.WriteLine("for is working"); + System.Threading.Thread.Sleep(300); + break; + } + + int t = 0; + for (; t < 3; t++) + { + Console.WriteLine("for_1: " + t); + } + + for (; t < 5; t++) + { + Console.WriteLine("for_2: " + t); + } + + for (int i = 0; i < 5;) + { + i++; + Console.WriteLine(i); + } + #endregion + #region $2 + for (int i = 0, j = 5; i < 10; i++) + { + Console.WriteLine("i: " + i); + Console.WriteLine("j: " + j); + j++; + } + #endregion + #region $3 + for (int i = 10; i > 0; i--) + { + Console.WriteLine("-- " + i); + } + #endregion + #region $4 + for (int i = 0, j = 5; i < 10 && j < 12; i++) + { + Console.WriteLine("i: " + i); + Console.WriteLine("j: " + j); + j++; + } + #endregion + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0b9645f --- /dev/null +++ b/LessonsAndTasks/Lesson 19 - Цикл for в обратном порядке/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 19 - Цикл for в обратном порядке")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 19 - Цикл for в обратном порядке")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("ee26a5f9-9c69-470b-94c4-7f7de42215b1")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных.sln b/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных.sln new file mode 100644 index 0000000..c6a6bb6 --- /dev/null +++ b/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1738 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson 2 Типы Данных", "Lesson 2 Типы Данных\Lesson 2 Типы Данных.csproj", "{DEBC4CED-8964-455A-8DEB-6FEADAF2851F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DEBC4CED-8964-455A-8DEB-6FEADAF2851F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DEBC4CED-8964-455A-8DEB-6FEADAF2851F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DEBC4CED-8964-455A-8DEB-6FEADAF2851F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DEBC4CED-8964-455A-8DEB-6FEADAF2851F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1E03A4EA-C95A-4384-9261-E58CC086A255} + EndGlobalSection +EndGlobal diff --git a/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/02_Lesson - Типы Данных.csproj b/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/02_Lesson - Типы Данных.csproj new file mode 100644 index 0000000..70ccf76 --- /dev/null +++ b/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/02_Lesson - Типы Данных.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {DEBC4CED-8964-455A-8DEB-6FEADAF2851F} + Exe + Lesson_2_Типы_Данных + Lesson 2 Типы Данных + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/App.config b/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/Program.cs b/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/Program.cs new file mode 100644 index 0000000..c22dcda --- /dev/null +++ b/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/Program.cs @@ -0,0 +1,58 @@ +using System; + +/* + * Типы данных в C# + */ +class Program +{ + static void Main() + { + string msg = "Тип {0,8} |\t.Net {1,8} |\tРазмер = {2} \t| MIN = {3,30}\t| MAX = {4}"; + + Console.Title = "Типы данных в C#"; + + Console.WriteLine("\n\t\t\t\t\tЧИСЛОВЫЕ (целочисленные) ТИПЫ:\n"); + + Console.WriteLine(string.Format(msg, "byte", typeof(byte).Name, sizeof(byte), byte.MinValue, byte.MaxValue)); + + Console.WriteLine(string.Format(msg, "sbyte", typeof(sbyte).Name, sizeof(sbyte), sbyte.MinValue, sbyte.MaxValue)); + + Console.WriteLine(string.Format(msg, "short", typeof(short).Name, sizeof(short), short.MinValue, short.MaxValue)); + + Console.WriteLine(string.Format(msg, "ushort", typeof(ushort).Name, sizeof(ushort), ushort.MinValue, ushort.MaxValue)); + + Console.WriteLine(string.Format(msg, "int", typeof(int).Name, sizeof(int), int.MinValue, int.MaxValue)); + + Console.WriteLine(string.Format(msg, "uint", typeof(uint).Name, sizeof(uint), uint.MinValue, uint.MaxValue)); + + Console.WriteLine(string.Format(msg, "long", typeof(long).Name, sizeof(long), long.MinValue, long.MaxValue)); + + Console.WriteLine(string.Format(msg, "ulong", typeof(ulong).Name, sizeof(ulong), ulong.MinValue, ulong.MaxValue)); + + Console.WriteLine("\n\t\t\t\t\tЧИСЛОВЫЕ (с плавающей точкой) ТИПЫ:\n"); + + Console.WriteLine(string.Format(msg, "float", typeof(float).Name, sizeof(float), float.MinValue, float.MaxValue)); + + Console.WriteLine(string.Format(msg, "double", typeof(double).Name, sizeof(double), double.MinValue, double.MaxValue)); + + Console.WriteLine(string.Format(msg, "decimal", typeof(decimal).Name, sizeof(decimal), decimal.MinValue, decimal.MaxValue)); + + Console.WriteLine("\n\t\t\t\t\tСИМВОЛЬНЫЕ ТИПЫ:\n"); + + Console.WriteLine(string.Format(msg, "char", typeof(char).Name, sizeof(char), char.MinValue, char.MaxValue)); + + Console.WriteLine(string.Format(msg, "string", typeof(string).Name, "N/A", "N/A", "N/A")); + + Console.WriteLine("\n\t\t\t\t\tЛОГИЧЕСКИЙ ТИП:\n"); + + Console.WriteLine(string.Format(msg, "bool", typeof(bool).Name, sizeof(bool), false, true)); + + Console.WriteLine("\n\t\t\t\t\tОСОБЫЕ ТИПЫ:\n"); + + Console.WriteLine(string.Format(msg, "object", typeof(object).Name, "N/A", "N/A", "N/A")); + + Console.WriteLine(string.Format(msg, "dynamic", "N/A", "N/A", "N/A", "N/A")); + + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..60aa1ea --- /dev/null +++ b/LessonsAndTasks/Lesson 2 - Типы Данных/Lesson 2 Типы Данных/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 2 Типы Данных")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 2 Типы Данных")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("debc4ced-8964-455a-8deb-6feadaf2851f")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/20_Lesson - Ключевое слово break (оператор).csproj b/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/20_Lesson - Ключевое слово break (оператор).csproj new file mode 100644 index 0000000..5692bae --- /dev/null +++ b/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/20_Lesson - Ключевое слово break (оператор).csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {E962F366-B388-4EE4-B276-000F1B4B8052} + Exe + Lesson_20___Ключевое_слово_break__оператор_ + Lesson 20 - Ключевое слово break %28оператор%29 + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/App.config b/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/Program.cs b/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/Program.cs new file mode 100644 index 0000000..d67c9d4 --- /dev/null +++ b/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/Program.cs @@ -0,0 +1,23 @@ +using System; + +/* + * ключевое слово break + */ +class Program +{ + static void Main() + { + for (int i = 0; i < 100; i++) + { + Console.WriteLine(i); + + string msg = Console.ReadLine(); + + if (msg == "exit") + break; + else if (i == 10) + break; + } + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3f3a2cc --- /dev/null +++ b/LessonsAndTasks/Lesson 20 - Ключевое слово break (оператор)/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 20 - Ключевое слово break (оператор)")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 20 - Ключевое слово break (оператор)")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("e962f366-b388-4ee4-b276-000f1b4b8052")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 21 - Ключевое слово continue/21_Lesson - Ключевое слово continue.csproj b/LessonsAndTasks/Lesson 21 - Ключевое слово continue/21_Lesson - Ключевое слово continue.csproj new file mode 100644 index 0000000..c3983ee --- /dev/null +++ b/LessonsAndTasks/Lesson 21 - Ключевое слово continue/21_Lesson - Ключевое слово continue.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {C8EB51D4-B80E-4227-9DC6-6E6D088F24BB} + Exe + Lesson_21___Ключевое_слово_continue + Lesson 21 - Ключевое слово continue + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 21 - Ключевое слово continue/App.config b/LessonsAndTasks/Lesson 21 - Ключевое слово continue/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 21 - Ключевое слово continue/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 21 - Ключевое слово continue/Program.cs b/LessonsAndTasks/Lesson 21 - Ключевое слово continue/Program.cs new file mode 100644 index 0000000..1959532 --- /dev/null +++ b/LessonsAndTasks/Lesson 21 - Ключевое слово continue/Program.cs @@ -0,0 +1,18 @@ +using System; + +/* + * ключевое слово continue + */ +class Program +{ + static void Main() + { + for (int i = 0; i < 100; i++) + { + if (i == 2) + continue; + Console.WriteLine(i); + } + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 21 - Ключевое слово continue/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 21 - Ключевое слово continue/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d2dd749 --- /dev/null +++ b/LessonsAndTasks/Lesson 21 - Ключевое слово continue/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 21 - Ключевое слово continue")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 21 - Ключевое слово continue")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("c8eb51d4-b80e-4227-9dc6-6e6d088f24bb")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/22_Lesson - Вложенные циклы. Как работают.csproj b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/22_Lesson - Вложенные циклы. Как работают.csproj new file mode 100644 index 0000000..febc613 --- /dev/null +++ b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/22_Lesson - Вложенные циклы. Как работают.csproj @@ -0,0 +1,56 @@ + + + + + Debug + AnyCPU + {542E79A5-E2AE-4446-AFF6-17D55EDA286D} + Exe + Lesson_22___Вложенные_циклы.Как_работают + Lesson_22___Вложенные_циклы.Как_работают + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/App.config b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Game.cs b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Game.cs new file mode 100644 index 0000000..97355e8 --- /dev/null +++ b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Game.cs @@ -0,0 +1,4 @@ +public class Game +{ + public string Name { get; set; } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/GameInfo.cs b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/GameInfo.cs new file mode 100644 index 0000000..7cb8334 --- /dev/null +++ b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/GameInfo.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; + +public class GameInfo +{ + public GameType TypeOfGame { get; set; } + + public List Games { get; set; } +} + +public enum GameType +{ + RPG, + Shooter, + Strategy +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Program.cs b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Program.cs new file mode 100644 index 0000000..45a4d2e --- /dev/null +++ b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Program.cs @@ -0,0 +1,207 @@ +using System; +using System.Collections.Generic; + +/* + * Вложенные циклы + */ +class Program +{ + static void Main() + { + for (int i = 1; i <= 3; i++) + { + Console.WriteLine("цикл 1 итерация № " + i); + for (int h = 1; h <= 5; h++) + { + Console.WriteLine("\t цикл 2 итерация № " + h); + for (int k = 1; k <= 2; k++) + { + Console.WriteLine("\t\t цикл 3 итерация № " + k); + } + } + } + + Console.ReadLine(); + Console.WriteLine("Высота"); + int height = int.Parse(Console.ReadLine()); + Console.WriteLine("Ширина"); + int width = int.Parse(Console.ReadLine()); + + for (int cube = 0; cube < height; cube++) + { + for (int line = 0; line < width; line++) + { + Console.Write("#"); + + } + Console.WriteLine(); + } + + Console.ReadLine(); + + // Example_1 + + int rows = 5; + int columns = 10; + var myArray = GetRandomArray(rows, columns); + + for (int g = 0; g < rows; g++) + { + for (int l = 0; l < columns; l++) + { + Console.Write($"{myArray[g, l]}\t"); + } + + Console.WriteLine(); + } + + Console.ReadLine(); + + /* + * Example_2 + */ + var gamesInfo = GetGamesInfo(); + + for (int u = 0; u < gamesInfo.Count; u++) + { + Console.WriteLine($"{gamesInfo[u].TypeOfGame}:"); + + for (int p = 0; p < gamesInfo[u].Games.Count; p++) + { + Console.WriteLine($" {gamesInfo[u].Games[p].Name}"); + } + + Console.WriteLine(); + } + + Console.ReadLine(); + + /* + * HomeWork + */ + for (int r = 0; r < 10; r++) + { + for (int rr = 0; rr <= r; rr++) + { + Console.Write("#"); + } + + Console.WriteLine(); + + } + + Console.WriteLine(); + Console.WriteLine(); + + for (int r = 10; r > 0; r--) + { + for (int rr = 0; rr < r; rr++) + { + Console.Write("#"); + } + + Console.WriteLine(); + } + + Console.WriteLine(); + Console.WriteLine(); + + for (int r = 10; r > 0; r--) + { + for (int rr = 1; rr < r; rr++) + { + Console.Write(" "); + } + + for (int rrr = 0; rrr < 11 - r; rrr++) + { + Console.Write("#"); + } + + Console.WriteLine(); + } + + Console.WriteLine(); + Console.WriteLine(); + + for (int r = 0; r < 10; r++) + { + for (int rr = 0; rr < r; rr++) + { + Console.Write(" "); + } + + for (int rrr = 0; rrr < 10 - r; rrr++) + { + Console.Write("#"); + } + + Console.WriteLine(); + } + + Console.WriteLine(); + Console.WriteLine(); + + Console.ReadLine(); + } + + /* + * Example_1 + */ + static int[,] GetRandomArray(int rows, int columns) + { + Random random = new Random(); + var result = new int[rows, columns]; + + for (int i = 0; i < rows; i++) + { + for (int j = 0; j < columns; j++) + { + //Генерация случайного числа от 0 до 100 + result[i, j] = random.Next(100); + } + } + + return result; + } + + /* + * Example_2 + */ + static List GetGamesInfo() + { + return new List() + { + new GameInfo + { + TypeOfGame = GameType.RPG, + Games = new List() + { + new Game() { Name = "Fallout 4"}, + new Game() { Name = "Gothic 2"}, + new Game() { Name = "The Elder Scrolls 3: Morrowind"} + } + }, + new GameInfo + { + TypeOfGame = GameType.Shooter, + Games = new List() + { + new Game() { Name = "Counter-Strike: Global Offensive"}, + new Game() { Name = "Battlefield 4"}, + new Game() { Name = "Doom"} + } + }, + new GameInfo + { + TypeOfGame = GameType.Strategy, + Games = new List() + { + new Game() { Name = "Civilization VI"}, + new Game() { Name = "Rome: Total War"}, + new Game() { Name = "Starcraft II"} + } + } + }; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4b12712 --- /dev/null +++ b/LessonsAndTasks/Lesson 22 - Вложенные циклы. Как работают/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 22 - Вложенные циклы. Как работают")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 22 - Вложенные циклы. Как работают")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("542e79a5-e2ae-4446-aff6-17d55eda286d")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/23_Lesson - Тернарный оператор. Что это. Пример.csproj b/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/23_Lesson - Тернарный оператор. Что это. Пример.csproj new file mode 100644 index 0000000..476e3ff --- /dev/null +++ b/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/23_Lesson - Тернарный оператор. Что это. Пример.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {C3596099-8F86-47F2-BA83-EA56E3BC76D0} + Exe + Lesson_23___Тернарный_оператор.Что_это.Пример + Lesson_23___Тернарный_оператор.Что_это.Пример + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/App.config b/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/Program.cs b/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/Program.cs new file mode 100644 index 0000000..798e948 --- /dev/null +++ b/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/Program.cs @@ -0,0 +1,48 @@ +using System; + +/* + * Тернарный оператор. + * [первый операнд - условие]?[второй операнд if_true]:[третий операнд if_false] + */ +class Program +{ + static void Main() + { + int a = 0; + + a++; //Унарная операция + int b = 0; + int c = a + b; //Бинарная операция + + //Тернарная операция + bool accessAllowed; + string storedPassword = "qwerty"; + string enteredPassword = Console.ReadLine(); + + if (enteredPassword == storedPassword) + accessAllowed = true; + else + accessAllowed = false; + + Console.WriteLine(accessAllowed); + + Console.ReadLine(); + + accessAllowed = enteredPassword == storedPassword ? true : false; + + Console.WriteLine(accessAllowed ? "успешно" : "не успешно"); + + Console.ReadLine(); + + accessAllowed = Console.ReadLine() == "qwerty"; + Console.WriteLine(accessAllowed ? "успешно" : "не успешно"); + + Console.ReadLine(); + + int inputData = int.Parse(Console.ReadLine()); + int outputData = inputData < 0 ? 0 : inputData; + Console.WriteLine(outputData); + + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3eeffa5 --- /dev/null +++ b/LessonsAndTasks/Lesson 23 - Тернарный оператор. Что это. Пример/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 23 - Тернарный оператор. Что это. Пример")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 23 - Тернарный оператор. Что это. Пример")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("c3596099-8f86-47f2-ba83-ea56e3bc76d0")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/24_Lesson - Что такое массивы. Одномерный массив. Примеры.csproj b/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/24_Lesson - Что такое массивы. Одномерный массив. Примеры.csproj new file mode 100644 index 0000000..b703dbf --- /dev/null +++ b/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/24_Lesson - Что такое массивы. Одномерный массив. Примеры.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {46607273-7BE4-41A6-90E5-ACFC1479A9AC} + Exe + Lesson_24___Что_такое_массивы.Одномерный_массив.Примеры + Lesson_24___Что_такое_массивы.Одномерный_массив.Примеры + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/App.config b/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/Program.cs b/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/Program.cs new file mode 100644 index 0000000..4aca949 --- /dev/null +++ b/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/Program.cs @@ -0,0 +1,27 @@ +using System; + +/* + * Массивы + * + * Одномерные массивы + * + * Тип_элементов_массива [] имя_массива; + */ +class Program +{ + static void Main() + { + int[] myArray; + + myArray = new int[5]; + + myArray[0] = 10; + myArray[1] = 3; + + int a = myArray[0]; + + Console.WriteLine(a); + + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1000ccf --- /dev/null +++ b/LessonsAndTasks/Lesson 24 - Что такое массивы. Одномерный массив. Примеры/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 24 - Что такое массивы. Одномерный массив. Примеры")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 24 - Что такое массивы. Одномерный массив. Примеры")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("46607273-7be4-41a6-90e5-acfc1479a9ac")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/25_Lesson - Инициализация массива. Способы.csproj b/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/25_Lesson - Инициализация массива. Способы.csproj new file mode 100644 index 0000000..e1d4d43 --- /dev/null +++ b/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/25_Lesson - Инициализация массива. Способы.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {F1F3121A-C3D9-46DB-A69E-CF810CD8A362} + Exe + Lesson_25___Инициализация_массива.Способы + Lesson_25___Инициализация_массива.Способы + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/App.config b/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/Program.cs b/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/Program.cs new file mode 100644 index 0000000..a1af99c --- /dev/null +++ b/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/Program.cs @@ -0,0 +1,24 @@ +using System; +using System.Linq; + +/* + * Массивы + * + * Одномерные массивы + * + * Способы инициализации массива + */ +class Program +{ + static void Main() + { + int[] myArray_1 = new int[5] { 5, 6, 7, 8, 9 }; + int[] myArray_2 = new int[] { 5, 6, 7, 8 }; + int[] myArray_3 = new[] { 5, 6, 7, 8 }; + int[] myArray_4 = { 5, 6, 7, 8 }; + int[] myArray_5 = Enumerable.Repeat(5, 10).ToArray(); + int[] myArray_6 = Enumerable.Range(4, 5).ToArray(); + + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..348ddd8 --- /dev/null +++ b/LessonsAndTasks/Lesson 25 - Инициализация массива. Способы/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 25 - Инициализация массива. Способы")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 25 - Инициализация массива. Способы")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("f1f3121a-c3d9-46db-a69e-cf810cd8a362")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/26_Lesson - Вывод массива. Перебор массива. Массивы и циклы.csproj b/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/26_Lesson - Вывод массива. Перебор массива. Массивы и циклы.csproj new file mode 100644 index 0000000..5d3392e --- /dev/null +++ b/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/26_Lesson - Вывод массива. Перебор массива. Массивы и циклы.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {C0D360CD-3C06-45CC-A0B0-4A5AC0783320} + Exe + Lesson_26___Вывод_массива.Перебор_массива.Массивы_и_циклы + Lesson_26___Вывод_массива.Перебор_массива.Массивы_и_циклы + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/App.config b/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/Program.cs b/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/Program.cs new file mode 100644 index 0000000..17a5086 --- /dev/null +++ b/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/Program.cs @@ -0,0 +1,66 @@ +using System; +using System.Linq; + +/* + * Массивы и циклы + */ +class Program +{ + static void Main() + { + int[] myArray = { 10, 3, 2, 55 }; + + for (int i = 0; i < myArray.Length; i++) + { + Console.WriteLine(myArray[i]); + } + + Console.ReadLine(); + + #region TASK №1 - заполнить массив с клавиатуры + Console.Write("Введите числа массива через пробел: "); + string str = Console.ReadLine(); + int lenght = str.Where(c => c == ' ').Count(); + int[] arrayTask_1 = new int[lenght + 1]; + + int index = 0; + string tmpStr = ""; + for (int i = 0; i < str.Length; i++) + { + tmpStr += str[i]; + if (str[i].ToString().Contains(" ") || i == (str.Length - 1)) + { + arrayTask_1[index] = int.Parse(tmpStr); + index++; + tmpStr = ""; + } + } + Console.ReadLine(); + #endregion + #region TASK №2 - вывести массив в обратном порядке + Console.WriteLine("вывести массив в обратном порядке"); + for (int i = arrayTask_1.Length - 1; i >= 0; i--) + { + Console.Write(arrayTask_1[i] + " "); + } + Console.ReadLine(); + #endregion + #region TASK №3 - найти сумму четных элементов + Console.WriteLine("найти сумму четных элементов"); + int even = 0; + for (int i = 0; i < arrayTask_1.Length; i++) + { + if (arrayTask_1[i] % 2 == 0) + even += arrayTask_1[i]; + } + Console.WriteLine($"Сумма четных равна {even}"); + Console.ReadLine(); + #endregion + #region TASK №4 - найти наименьшее число в массиве + Console.WriteLine("найти наименьшее число в массиве:"); + Console.WriteLine(arrayTask_1.Min()); + #endregion + + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..212ac60 --- /dev/null +++ b/LessonsAndTasks/Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("c0d360cd-3c06-45cc-a0b0-4a5ac0783320")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/27_Lesson - Как работать с массивами на самом деле.csproj b/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/27_Lesson - Как работать с массивами на самом деле.csproj new file mode 100644 index 0000000..178cd5b --- /dev/null +++ b/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/27_Lesson - Как работать с массивами на самом деле.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {027E7BEF-CE49-4672-93CD-9F3F4471B92A} + Exe + Lesson_27___Как_работать_с_массивами_на_самом_деле + Lesson 27 - Как работать с массивами на самом деле + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/App.config b/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/Program.cs b/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/Program.cs new file mode 100644 index 0000000..88e7ee9 --- /dev/null +++ b/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/Program.cs @@ -0,0 +1,26 @@ +using System; +using System.Linq; + +/* + * как работать с массивами на самом деле + */ +class Program +{ + static void Main() + { + int[] myArray = { 111, 10, 4, 99, 49, 64, 99, 4, 42, 5 }; + int value_0 = myArray.Min(); + int[] value_1 = myArray.Where(i => i % 2 != 0).ToArray(); //Перебор по нужному условию + Console.WriteLine(value_1); + int[] result = myArray.Distinct().ToArray(); //Только уникальные + int[] result_1 = myArray.OrderBy(i => i).ToArray(); //Сортировка + Array.Sort(myArray); + Array.Find(myArray, i => i < 70); + Array.FindLast(myArray, i => i < 70); + int[] result_2 = Array.FindAll(myArray, i => i < 70); + int result_3 = Array.FindIndex(myArray, i => i == 70); + Array.Reverse(myArray); + int result_4 = myArray.Where(i => i < 70).FirstOrDefault(); //Первое число меньше 70 + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c8ee8d5 --- /dev/null +++ b/LessonsAndTasks/Lesson 27 - Как работать с массивами на самом деле/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 27 - Как работать с массивами на самом деле")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 27 - Как работать с массивами на самом деле")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("027e7bef-ce49-4672-93cd-9f3f4471b92a")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 28 - Индексы и диапазоны/28_Lesson - Индексы и диапазоны.csproj b/LessonsAndTasks/Lesson 28 - Индексы и диапазоны/28_Lesson - Индексы и диапазоны.csproj new file mode 100644 index 0000000..117f320 --- /dev/null +++ b/LessonsAndTasks/Lesson 28 - Индексы и диапазоны/28_Lesson - Индексы и диапазоны.csproj @@ -0,0 +1,9 @@ + + + + Exe + netcoreapp3.1 + Lesson_28___Индексы_и_диапазоны + + + diff --git a/LessonsAndTasks/Lesson 28 - Индексы и диапазоны/Program.cs b/LessonsAndTasks/Lesson 28 - Индексы и диапазоны/Program.cs new file mode 100644 index 0000000..5990824 --- /dev/null +++ b/LessonsAndTasks/Lesson 28 - Индексы и диапазоны/Program.cs @@ -0,0 +1,46 @@ +using System; + +/* + * индексы и диапазоны + */ +class Program +{ + static void Main() + { + int[] myArray = { 2, 10, 5, 5, 1, 1, 2, 3 }; + Console.WriteLine(myArray[^1]); // Поддерживает >= .Net Core 3.0 - выводит первый элемент с конца + + int[] myIntArray = myArray[1..4]; // Поддерживает >= .Net Core 3.0 - извлекает диапазон элементов + + Index index = ^2; + int res = myArray[index]; + Console.WriteLine(index.Value); // Порядковый номер выводимого элемента + Console.WriteLine(index.IsFromEnd); // C начала или с конца использовать индекс + + Index construct = new Index(3, true); + Console.WriteLine(construct); + Range range = new Range(2, 5); + Console.WriteLine(range); + Console.WriteLine(myArray[new Range(1, 2)]); + int[] myCR = myArray[^3..^1]; + Console.WriteLine(myCR[^1]); + string str = "Hello"; + Console.WriteLine(str[1..3]); + Console.WriteLine(myArray[^2]); // извлечение второго элемента с конца + Console.WriteLine(); + + //примеры извлечений диапазонов элементов из массива с выводом в консоль + foreach (var item in myArray[..4]) + Console.WriteLine($"{item} "); + Console.WriteLine("\n"); + + foreach (var item in myArray[4..]) + Console.WriteLine($"{item} "); + Console.WriteLine("\n"); + + foreach (var item in myArray[5..7]) + Console.WriteLine($"{item} "); + Console.WriteLine("\n"); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/29_Lesson - Многомерные массивы. Двумерный прямоугольный массив.csproj b/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/29_Lesson - Многомерные массивы. Двумерный прямоугольный массив.csproj new file mode 100644 index 0000000..09218b4 --- /dev/null +++ b/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/29_Lesson - Многомерные массивы. Двумерный прямоугольный массив.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {E85F79E9-98D3-4451-9CF9-163631DBB6AF} + Exe + Lesson_29___Многомерные_массивы.Двумерный_прямоугольный_массив + Lesson_29___Многомерные_массивы.Двумерный_прямоугольный_массив + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/App.config b/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/Program.cs b/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/Program.cs new file mode 100644 index 0000000..ea19c75 --- /dev/null +++ b/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/Program.cs @@ -0,0 +1,21 @@ +/* + * многомерные массивы + * + * двумерный прямоугольный массив + */ +class Program +{ + static void Main() + { + //Некая коллекция данных + /* + * y/x 0 1 2 + * 0 1 1 1 + * 1 1 1 1 + * 2 1 1 1 + * + * index y;x + * index 1;1 + */ + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..57892be --- /dev/null +++ b/LessonsAndTasks/Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("e85f79e9-98d3-4451-9cf9-163631dbb6af")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке.sln b/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке.sln new file mode 100644 index 0000000..d22f595 --- /dev/null +++ b/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1738 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson 3 - Переменные в языке", "Lesson 3 - Переменные в языке\Lesson 3 - Переменные в языке.csproj", "{188BE1DF-C5E2-432A-A34B-B5B84F878235}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {188BE1DF-C5E2-432A-A34B-B5B84F878235}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {188BE1DF-C5E2-432A-A34B-B5B84F878235}.Debug|Any CPU.Build.0 = Debug|Any CPU + {188BE1DF-C5E2-432A-A34B-B5B84F878235}.Release|Any CPU.ActiveCfg = Release|Any CPU + {188BE1DF-C5E2-432A-A34B-B5B84F878235}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3C73ED95-AA89-4034-A0AD-F1D3882885FC} + EndGlobalSection +EndGlobal diff --git a/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/03_Lesson - Переменные в языке.csproj b/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/03_Lesson - Переменные в языке.csproj new file mode 100644 index 0000000..72e3b38 --- /dev/null +++ b/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/03_Lesson - Переменные в языке.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {188BE1DF-C5E2-432A-A34B-B5B84F878235} + Exe + Lesson_3___Переменные_в_языке + Lesson 3 - Переменные в языке + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/App.config b/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/Program.cs b/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/Program.cs new file mode 100644 index 0000000..d4eaf03 --- /dev/null +++ b/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/Program.cs @@ -0,0 +1,50 @@ +using System; + +/* + * Переменные в C# + * + * Объявление (создание) переменных + * + * Инициализация переменных + * + * Присвоение значения переменной (помещение данных) + */ +class Program +{ + static void Main() + { + int a = 5, b = 9; // Тип_данных имя_переменной; + + Console.WriteLine(a); + + a = 747; // Помещение значения + + Console.WriteLine(a); + Console.WriteLine(b); + + Console.WriteLine("\t"); + + bool variable1 = false; // Объявление переменной + bool Variable1 = false; + bool variable2 = true; + + Console.WriteLine(variable1); + Console.WriteLine(variable2); + Console.WriteLine(Variable1); + + Console.WriteLine("\t"); + + double t = 1.33; + + Console.WriteLine(t); + + char c = '#'; + string cc = "dfdfdsf"; + + Console.WriteLine(c); + Console.WriteLine(cc); + + Console.WriteLine("\t"); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2d2b663 --- /dev/null +++ b/LessonsAndTasks/Lesson 3 - Переменные в языке/Lesson 3 - Переменные в языке/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 3 - Переменные в языке")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 3 - Переменные в языке")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("188be1df-c5e2-432a-a34b-b5b84f878235")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/30_Lesson - Двумерный массив. Объявление. Инициализация. Индексы.csproj b/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/30_Lesson - Двумерный массив. Объявление. Инициализация. Индексы.csproj new file mode 100644 index 0000000..ad5fcdb --- /dev/null +++ b/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/30_Lesson - Двумерный массив. Объявление. Инициализация. Индексы.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {31F0D7A5-6BDF-49BD-B2A7-3BB7879213BB} + Exe + Lesson_30___Двумерный_массив.Объявление.Инициализация.Индексы + Lesson_30___Двумерный_массив.Объявление.Инициализация.Индексы + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/App.config b/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/Program.cs b/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/Program.cs new file mode 100644 index 0000000..a288e24 --- /dev/null +++ b/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/Program.cs @@ -0,0 +1,29 @@ +using System; + +/* + * двумерный массив + * + * инициализация + * + * обращение к элементам двумерного массива + */ +class Program +{ + static void Main() + { + //тип_данных [,] имя_массива; + + int[,] myArray = new int[3, 5]; + int[,] myArray_1 = + { + { 34, 44, 55, 22, 33 }, + { 34, 44, 55, 22, 33 }, + { 34, 44, 55, 22, 33 } + }; + + myArray[0, 2] = 90; + + Console.WriteLine(myArray[0, 2]); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..06d9050 --- /dev/null +++ b/LessonsAndTasks/Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("31f0d7a5-6bdf-49bd-b2a7-3bb7879213bb")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/31_Lesson - Вывод двумерного массива.csproj b/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/31_Lesson - Вывод двумерного массива.csproj new file mode 100644 index 0000000..fc7cd0c --- /dev/null +++ b/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/31_Lesson - Вывод двумерного массива.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {8A4C8531-FC1F-4BE9-9625-B359984F0CEB} + Exe + Lesson_31___Вывод_двумерного_массива + Lesson 31 - Вывод двумерного массива + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/App.config b/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/Program.cs b/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/Program.cs new file mode 100644 index 0000000..9621015 --- /dev/null +++ b/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/Program.cs @@ -0,0 +1,47 @@ +using System; + +/* + * Вывод двумерного массива + */ +class Program +{ + static void Main() + { + int[,] myArray = new int[,] + { + {1, 2, 3, 4 }, + {5, 6, 7, 8 }, + {9, 10, 11, 12 }, + {13, 14, 15, 16 } + }; + + foreach (var item in myArray) + { + Console.WriteLine(item); + } + Console.WriteLine(); + + //Число измерений массива - одномерный, двумерный и тд. + Console.WriteLine(myArray.Rank); + Console.WriteLine(); + + //Суммарно число элементов в массиве. + Console.WriteLine(myArray.Length); + Console.WriteLine(); + + //Количество элементов в конкретном измерении (измеряется с 0(1)) + Console.WriteLine(myArray.GetLength(1)); + Console.WriteLine(); + + for (int y = 0; y < myArray.GetLength(0); y++) + { + for (int x = 0; x < myArray.GetLength(1); x++) + { + Console.Write(myArray[y, x] + "\t"); + } + Console.WriteLine(); + } + Console.WriteLine(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ce62152 --- /dev/null +++ b/LessonsAndTasks/Lesson 31 - Вывод двумерного массива/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 31 - Вывод двумерного массива")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 31 - Вывод двумерного массива")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("8a4c8531-fc1f-4be9-9625-b359984f0ceb")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/32_Lesson - Заполнение двумерного масива, случайными числами.csproj b/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/32_Lesson - Заполнение двумерного масива, случайными числами.csproj new file mode 100644 index 0000000..781e6d2 --- /dev/null +++ b/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/32_Lesson - Заполнение двумерного масива, случайными числами.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {78D5B5FF-0681-49E1-9752-B4AB395A47AB} + Exe + Lesson_32___Заполнение_двумерного_масива__случайными_числами + Lesson 32 - Заполнение двумерного масива, случайными числами + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/App.config b/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/Program.cs b/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/Program.cs new file mode 100644 index 0000000..50d3412 --- /dev/null +++ b/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/Program.cs @@ -0,0 +1,72 @@ +using System; + +/* + * Заполнение двумерного массива случайными числами + * + * Заполнение двумерного масива с клавиатуры + */ +class Program +{ + static void Main() + { + int[,] myArray = new int[2, 2]; + string[,] myArray1 = new string[2, 2]; + + Random rnd = new Random(); + + #region Random + for (int y = 0; y < myArray.GetLength(0); y++) + { + for (int x = 0; x < myArray.GetLength(1); x++) + { + myArray[y, x] = rnd.Next(0, 1000); + } + } + #endregion + + #region Int + for (int y = 0; y < myArray.GetLength(0); y++) + { + for (int x = 0; x < myArray.GetLength(1); x++) + { + Console.Write($"Введите значение в элемент массива [myArray] под индексом [{0}][{1}]: ", y, x); + myArray[y, x] = int.Parse(Console.ReadLine()); + Console.WriteLine(); + } + Console.WriteLine(); + } + + for (int y = 0; y < myArray.GetLength(0); y++) + { + for (int x = 0; x < myArray.GetLength(1); x++) + { + Console.Write(myArray[y, x] + "\t"); + } + Console.WriteLine(); + } + #endregion + + #region String + for (int y = 0; y < myArray1.GetLength(0); y++) + { + for (int x = 0; x < myArray1.GetLength(1); x++) + { + Console.Write($"Введите значение в элемент массива [myArray1] под индексом [{0}][{1}]: ", y, x); + myArray1[y, x] = Console.ReadLine(); + Console.WriteLine(); + } + Console.WriteLine(); + } + + for (int y = 0; y < myArray1.GetLength(0); y++) + { + for (int x = 0; x < myArray1.GetLength(1); x++) + { + Console.Write(myArray1[y, x] + "\t"); + } + Console.WriteLine(); + } + #endregion + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3836d50 --- /dev/null +++ b/LessonsAndTasks/Lesson 32 - Заполнение двумерного масива, случайными числами/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 32 - Заполнение двумерного масива, случайными числами")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 32 - Заполнение двумерного масива, случайными числами")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("78d5b5ff-0681-49e1-9752-b4ab395a47ab")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/33_Lesson - Ступенчатые (зубчатые) массивы.csproj b/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/33_Lesson - Ступенчатые (зубчатые) массивы.csproj new file mode 100644 index 0000000..e1714b0 --- /dev/null +++ b/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/33_Lesson - Ступенчатые (зубчатые) массивы.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {9AA9A703-8243-4EAE-B022-EE2FF4027A85} + Exe + Lesson_33___Ступенчатые__зубчатые__массивы + Lesson 33 - Ступенчатые %28зубчатые%29 массивы + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/App.config b/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/Program.cs b/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/Program.cs new file mode 100644 index 0000000..7839900 --- /dev/null +++ b/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/Program.cs @@ -0,0 +1,43 @@ +using System; + +/* + * Cтупенчатые (зубчатые) массивы + */ +class Program +{ + static void Main() + { + int[][] test1 = new int[3][]; + int[,] test2 = new int[3, 6]; + + int tes1Rank = test1.Rank; + int test2Rank = test2.Rank; + + int tes1Lenght = test1.Length; + int test2Lenght = test2.Length; + + test1[0] = new int[5]; + test1[1] = new int[8]; + test1[2] = new int[2]; + test1[0][2] = 6; + Console.WriteLine(test1[0][2]); + Random rnd = new Random(); + for (int i = 0; i < test1.Length; i++) + { + for (int k = 0; k < test1[i].Length; k++) + { + test1[i][k] = rnd.Next(100); + } + } + + for (int i = 0; i < test1.Length; i++) + { + for (int k = 0; k < test1[i].Length; k++) + { + Console.Write(test1[i][k] + "\t"); + } + Console.WriteLine(); + } + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7325aa7 --- /dev/null +++ b/LessonsAndTasks/Lesson 33 - Ступенчатые (зубчатые) массивы/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 33 - Ступенчатые (зубчатые) массивы")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 33 - Ступенчатые (зубчатые) массивы")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("9aa9a703-8243-4eae-b022-ee2ff4027a85")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/34_Lesson - Трехмерные массивы, многомерные массивы любой мерности.csproj b/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/34_Lesson - Трехмерные массивы, многомерные массивы любой мерности.csproj new file mode 100644 index 0000000..1fade9c --- /dev/null +++ b/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/34_Lesson - Трехмерные массивы, многомерные массивы любой мерности.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {AA3C2474-5FFC-45B8-8C23-CCE0E2DBD851} + Exe + Lesson_34___Трехмерные_массивы__многомерные_массивы_любой_мерности + Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/App.config b/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/Program.cs b/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/Program.cs new file mode 100644 index 0000000..02c0207 --- /dev/null +++ b/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/Program.cs @@ -0,0 +1,116 @@ +using System; + +/* + * Трехмерные и более массивы + */ +class Program +{ + static void Main() + { + int[,,,] myArray = new int[3, 5, 4, 7]; + int[,,] myArray_1 = new int[3, 5, 7]; + Random rnd = new Random(); + myArray_1[0, 1, 1] = 60; + + Console.WriteLine(myArray_1[0, 1, 1]); + + int[,,] myArray_2 = + { + { + {1, 2 }, + {2, 3 } + }, + { + {1, 2 }, + {2, 3 } + }, + { + {1, 2 }, + {2, 3 } + } + }; + + Console.ReadLine(); + + for (int i = 0; i < myArray.GetLength(0); i++) + { + for (int j = 0; j < myArray.GetLength(1); j++) + { + for (int o = 0; o < myArray.GetLength(2); o++) + { + for (int k = 0; k < myArray.GetLength(3); k++) + { + myArray[i, j, o, k] = rnd.Next(100); + } + } + } + } + + for (int i = 0; i < myArray.GetLength(0); i++) + { + Console.WriteLine($"Book №{i + 1}\n"); + for (int j = 0; j < myArray.GetLength(1); j++) + { + Console.WriteLine($"\t Page №{j + 1}\n"); + + for (int o = 0; o < myArray.GetLength(2); o++) + { + Console.WriteLine($"\t\t List №{o + 1}\n"); + + for (int k = 0; k < myArray.GetLength(3); k++) + { + Console.Write(myArray[i, j, o, k] + "\t"); + } + Console.WriteLine("\n"); + } + Console.WriteLine(); + } + Console.WriteLine("##################################"); + } + + Console.ReadLine(); + + int[][][][] arrayZub = new int[rnd.Next(3, 6)][][][]; + + for (int i = 0; i < arrayZub.Length; i++) + { + arrayZub[i] = new int[rnd.Next(4, 9)][][]; + for (int j = 0; j < arrayZub[i].Length; j++) + { + arrayZub[i][j] = new int[rnd.Next(2, 5)][]; + + for (int o = 0; o < arrayZub[i][j].Length; o++) + { + arrayZub[i][j][o] = new int[rnd.Next(2, 5)]; + for (int l = 0; l < arrayZub[i][j][o].Length; l++) + { + arrayZub[i][j][o][l] = rnd.Next(100); + } + } + } + } + + for (int i = 0; i < arrayZub.Length; i++) + { + Console.WriteLine($"Book №{i + 1}\n"); + for (int j = 0; j < arrayZub[i].Length; j++) + { + Console.WriteLine($"\t Page №{j + 1}\n"); + + for (int o = 0; o < arrayZub[i][j].Length; o++) + { + Console.WriteLine($"\t\t List №{o + 1}\n"); + + for (int k = 0; k < arrayZub[i][j][o].Length; k++) + { + Console.Write(arrayZub[i][j][o][k] + "\t"); + } + Console.WriteLine("\n"); + } + Console.WriteLine(); + } + Console.WriteLine("************************************"); + } + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..541f40d --- /dev/null +++ b/LessonsAndTasks/Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("aa3c2474-5ffc-45b8-8c23-cce0e2dbd851")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/35_Lesson - Функции и методы, что это, примеры.csproj b/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/35_Lesson - Функции и методы, что это, примеры.csproj new file mode 100644 index 0000000..2b7acbb --- /dev/null +++ b/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/35_Lesson - Функции и методы, что это, примеры.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {D456B58D-3801-4B76-BE69-82A4FDB5A993} + Exe + Lesson_35___Функции_и_методы__что_это__примеры + Lesson 35 - Функции и методы, что это, примеры + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/App.config b/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/Program.cs b/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/Program.cs new file mode 100644 index 0000000..56df0d9 --- /dev/null +++ b/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/Program.cs @@ -0,0 +1,84 @@ +using System; + +/* + * Функции и методы, что это, примеры + * + * модификаторы тип_возвращаемого значения название_метода (параметры) + * { + * тело метода + * } + */ +class Program +{ + static void Main() + { + int a, b, c; + Console.Write("Введите число №1: "); + a = int.Parse(Console.ReadLine()); + Console.Write("Введите число №2: "); + b = int.Parse(Console.ReadLine()); + + c = a + b; + + Console.WriteLine(c); + + Console.WriteLine(Sum(a, b)); + + Console.ReadLine(); + + PrintLine(c); + + //Дз №1 (диапазон символов) + // Написать метод который выводит на экран строку + // Символы из которых состоит строка и их количество вводятся пользователем + PrintStr(10, new char[2] { 'Q', 'Z' }); + //Дз №2 + // Написать метод для поиска индекса элемента массива (тип элементов в массиве -int) + // Метод должен вернуть индекс первого найденного элемента (если он будет найден) + int[] test_Array = new int[10] { 2, 4, 5, 6, 45, 5, 6, 3, 4222, 6 }; + Console.WriteLine($"Индекс элемента {4222} массива test_Array: " + CheckIndexArray(4222, test_Array)); + Console.ReadKey(); + } + + public static int Sum(int value_1, int value_2) + { + return value_1 + value_2; + } + + public static void PrintLine(int value) + { + Console.WriteLine("printLine: " + value); + } + + public static void PrintStr(uint length, char[] symbol) + { + Random rnd = new Random(); + string result = ""; + + int index = 0; + while (index <= length) + { + index++; + char symRes = (char)rnd.Next(symbol[0], symbol[1]); + result += symRes; + } + + Console.WriteLine("String: " + result); + } + + public static int CheckIndexArray(int value, int[] array) + { + if (array.Length != 0) + { + int index_Array = 0; + foreach (var el_array in array) + { + index_Array++; + if (el_array == value) + return index_Array - 1; + } + } + + return -1; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..affcdb3 --- /dev/null +++ b/LessonsAndTasks/Lesson 35 - Функции и методы, что это, примеры/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 35 - Функции и методы, что это, примеры")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 35 - Функции и методы, что это, примеры")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("d456b58d-3801-4b76-be69-82a4fdb5a993")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 36 - Перегрузка методов/36_Lesson - Перегрузка методов.csproj b/LessonsAndTasks/Lesson 36 - Перегрузка методов/36_Lesson - Перегрузка методов.csproj new file mode 100644 index 0000000..9231317 --- /dev/null +++ b/LessonsAndTasks/Lesson 36 - Перегрузка методов/36_Lesson - Перегрузка методов.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {F34542A8-0AAA-46C7-98DE-0DF72E9A7E2F} + Exe + Lesson_36____Перегрузка_методов + Lesson 36 - Перегрузка методов + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 36 - Перегрузка методов/App.config b/LessonsAndTasks/Lesson 36 - Перегрузка методов/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 36 - Перегрузка методов/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 36 - Перегрузка методов/Program.cs b/LessonsAndTasks/Lesson 36 - Перегрузка методов/Program.cs new file mode 100644 index 0000000..c56c949 --- /dev/null +++ b/LessonsAndTasks/Lesson 36 - Перегрузка методов/Program.cs @@ -0,0 +1,36 @@ +using System; + +/* + * Перегрузка методов (несколько реализаций одного и того же метода с разной сигнатурой) + */ +class Program +{ + public static int Sum(int a, int b) + { + return a + b; + } + + public static int Sum(int a, int b, int c) + { + return a + b + c; + } + + /// + /// Сумма чисел разных типов + /// + /// Число 1 + /// Число 2(double) + /// Число 3 + /// Сумма + public static double Sum(int a, double b, int c) + { + return (double)a + b + c; + } + + static void Main() + { + double sum = Sum(1, 2.3, 4); + Console.WriteLine(sum); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 36 - Перегрузка методов/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 36 - Перегрузка методов/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4ecec27 --- /dev/null +++ b/LessonsAndTasks/Lesson 36 - Перегрузка методов/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 36 - Перегрузка методов")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 36 - Перегрузка методов")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("f34542a8-0aaa-46c7-98de-0df72e9a7e2f")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/37_Lesson - Область видимости, контекст переменной, конфликт областей.csproj b/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/37_Lesson - Область видимости, контекст переменной, конфликт областей.csproj new file mode 100644 index 0000000..e21c8a0 --- /dev/null +++ b/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/37_Lesson - Область видимости, контекст переменной, конфликт областей.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {149CE343-79C3-4AE2-B61E-51845872C151} + Exe + Lesson_37____Область_видимости__контекст_переменной__конфликт_областей + Lesson 37 - Область видимости, контекст переменной, конфликт областей + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/App.config b/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/Program.cs b/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/Program.cs new file mode 100644 index 0000000..d072bed --- /dev/null +++ b/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/Program.cs @@ -0,0 +1,30 @@ +using System; + +/* + * Область видимости, или контекст переменной + * Конфликты областей видимости + */ +class Program +{ + static int a = 3; + static int aa = 3; + + static void Foo() + { + int b = 0; + + int aa = 2; + Console.WriteLine(aa); + } + + static void Main() + { + for (int i = 0; i < 2; i++) + { + ++i; + } + Foo(); + a++; // Область видимости и конктекст переменной - это одно и то же + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..53cea4a --- /dev/null +++ b/LessonsAndTasks/Lesson 37 - Область видимости, контекст переменной, конфликт областей/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 37 - Область видимости, контекст переменной, конфликт областей")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 37 - Область видимости, контекст переменной, конфликт областей")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("149ce343-79c3-4ae2-b61e-51845872c151")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/38_Lesson - Ссылочные и значимые типы, стек и куча.csproj b/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/38_Lesson - Ссылочные и значимые типы, стек и куча.csproj new file mode 100644 index 0000000..86a5a9d --- /dev/null +++ b/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/38_Lesson - Ссылочные и значимые типы, стек и куча.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {AA330FB4-E2E1-4570-9ECD-65F8100E90D5} + Exe + Lesson_38____Ссылочные_и_значимые_типы__стек_и_куча + Lesson 38 - Ссылочные и значимые типы, стек и куча + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/App.config b/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/Program.cs b/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/Program.cs new file mode 100644 index 0000000..9f80f64 --- /dev/null +++ b/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/Program.cs @@ -0,0 +1,56 @@ +using System; + +/* + * Ссылочные (reference type) и значимые (value types) типы + * + * Стек (stack) и куча (heap) + */ +class Program +{ + /// + /// Данные удаляются из стека после выполненения + /// + /// val + static void Foo(int a) + { + a = 5; + } + + static void Bar(int[] a) + { + a[0] = 3; + } + + + /// + /// Stack - Enum, Struct + /// Heap - Class + /// + static void Main() + { + { + int y = 2; + } + + //Stack + int a = 4; + System.Int32 g = 5; + + //Heap + Random rnd = new Random(); + + //Heap gg(data) - реальные данные теущего массива Stack gg(ref) - ссылка + Array array; + int[] gg; + + //Stack + ConsoleKey consoleKey; + + Foo(a); + + int[] ba = new int[1]; + ba[1] = 2; + Bar(ba); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..dc19051 --- /dev/null +++ b/LessonsAndTasks/Lesson 38 - Ссылочные и значимые типы, стек и куча/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 38 - Ссылочные и значимые типы, стек и куча")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 38 - Ссылочные и значимые типы, стек и куча")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("aa330fb4-e2e1-4570-9ecd-65f8100e90d5")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 39 - Что такое NULL/39_Lesson - Что такое NULL.csproj b/LessonsAndTasks/Lesson 39 - Что такое NULL/39_Lesson - Что такое NULL.csproj new file mode 100644 index 0000000..b9ab8ac --- /dev/null +++ b/LessonsAndTasks/Lesson 39 - Что такое NULL/39_Lesson - Что такое NULL.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {5BE6607E-0B8C-441E-B80E-14236D377D08} + Exe + Lesson_39___Что_такое_NULL + Lesson 39 - Что такое NULL + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 39 - Что такое NULL/App.config b/LessonsAndTasks/Lesson 39 - Что такое NULL/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 39 - Что такое NULL/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 39 - Что такое NULL/Program.cs b/LessonsAndTasks/Lesson 39 - Что такое NULL/Program.cs new file mode 100644 index 0000000..7a67985 --- /dev/null +++ b/LessonsAndTasks/Lesson 39 - Что такое NULL/Program.cs @@ -0,0 +1,39 @@ +using System; + +/* + * Что такое NULL + */ +class MyClass +{ + +} + +struct MyStruct +{ + +} + +class Program +{ + static void Heap() + { + int[] a = new int[10]; + } + + static void Main() + { + bool b; + int a; + double d; + + //У классов - NULL + Random random; + int[] arr; + MyClass myClass; + + MyStruct myStruct; + + Heap(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 39 - Что такое NULL/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 39 - Что такое NULL/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..5ba5392 --- /dev/null +++ b/LessonsAndTasks/Lesson 39 - Что такое NULL/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 39 - Что такое NULL")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 39 - Что такое NULL")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("5be6607e-0b8c-441e-b80e-14236d377d08")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль.sln b/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль.sln new file mode 100644 index 0000000..63dad86 --- /dev/null +++ b/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1738 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson 4 - Ввод данных в консоль", "Lesson 4 - Ввод данных в консоль\Lesson 4 - Ввод данных в консоль.csproj", "{B1DC4F5A-1A96-4068-B1FA-2E78286AE2C4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B1DC4F5A-1A96-4068-B1FA-2E78286AE2C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1DC4F5A-1A96-4068-B1FA-2E78286AE2C4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1DC4F5A-1A96-4068-B1FA-2E78286AE2C4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1DC4F5A-1A96-4068-B1FA-2E78286AE2C4}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2C4A730F-9925-4F76-A407-51D78323790E} + EndGlobalSection +EndGlobal diff --git a/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/04_Lesson - Ввод данных в консоль.csproj b/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/04_Lesson - Ввод данных в консоль.csproj new file mode 100644 index 0000000..83c64c1 --- /dev/null +++ b/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/04_Lesson - Ввод данных в консоль.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {B1DC4F5A-1A96-4068-B1FA-2E78286AE2C4} + Exe + Lesson_4___Ввод_данных_в_консоль + Lesson 4 - Ввод данных в консоль + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/App.config b/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/Program.cs b/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/Program.cs new file mode 100644 index 0000000..443c659 --- /dev/null +++ b/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/Program.cs @@ -0,0 +1,15 @@ +using System; + +/* + * Ввод данных в консоль + */ +class Program +{ + static void Main() + { + string data; // Объявление переменной + data = Console.ReadLine(); // Чтение значения с консоли + Console.WriteLine("Привет " + data + "!!!"); // Конкатенация + Console.ReadKey(); // Просмотр содержимого + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1848123 --- /dev/null +++ b/LessonsAndTasks/Lesson 4 - Ввод данных в консоль/Lesson 4 - Ввод данных в консоль/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 4 - Ввод данных в консоль")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 4 - Ввод данных в консоль")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("b1dc4f5a-1a96-4068-b1fa-2e78286ae2c4")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/40_Lesson - Оператор объединения с NULL.csproj b/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/40_Lesson - Оператор объединения с NULL.csproj new file mode 100644 index 0000000..0e0e536 --- /dev/null +++ b/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/40_Lesson - Оператор объединения с NULL.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {D4526E9D-E808-4922-8841-96A03BB14650} + Exe + Lesson_40___Оператор_объекдинения_с__NULL + Lesson 40 - Оператор объекдинения с NULL + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/App.config b/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/Program.cs b/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/Program.cs new file mode 100644 index 0000000..dd82f57 --- /dev/null +++ b/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/Program.cs @@ -0,0 +1,15 @@ +using System; + +/* + * Оператора объединения с NULL ?? + */ +class Program +{ + static void Main() + { + string str = null; + Console.WriteLine(str ?? "NULL"); + Console.WriteLine("Lenght" + str ?? "no"); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1ed606d --- /dev/null +++ b/LessonsAndTasks/Lesson 40 - Оператор объекдинения с NULL/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 40 - Оператор объекдинения с NULL")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 40 - Оператор объекдинения с NULL")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("d4526e9d-e808-4922-8841-96a03bb14650")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/40_wf_Lesson - Оператор объекдинения с NUL.csproj b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/40_wf_Lesson - Оператор объекдинения с NUL.csproj new file mode 100644 index 0000000..8362ac4 --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/40_wf_Lesson - Оператор объекдинения с NUL.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + {E936CD37-FC1B-4D05-8BE7-B3F29EC393B1} + WinExe + Lesson_40_wf___Оператор_объекдинения_с__NULL + Lesson 40_wf - Оператор объекдинения с NULL + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/App.config b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Contacts.cs b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Contacts.cs new file mode 100644 index 0000000..affbd7a --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Contacts.cs @@ -0,0 +1,5 @@ +public class Contacts +{ + public string PhoneNumber { get; set; } + public string Email { get; set; } +} diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.Designer.cs b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.Designer.cs new file mode 100644 index 0000000..ca75f72 --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.Designer.cs @@ -0,0 +1,68 @@ +partial class Form1 +{ + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором форм Windows + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + this.listBox1 = new System.Windows.Forms.ListBox(); + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // listBox1 + // + this.listBox1.FormattingEnabled = true; + this.listBox1.Location = new System.Drawing.Point(12, 12); + this.listBox1.Name = "listBox1"; + this.listBox1.Size = new System.Drawing.Size(588, 381); + this.listBox1.TabIndex = 0; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(13, 404); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 1; + this.button1.Text = "RUN"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(612, 439); + this.Controls.Add(this.button1); + this.Controls.Add(this.listBox1); + this.Name = "Form1"; + this.Text = "Form1"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListBox listBox1; + private System.Windows.Forms.Button button1; +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.cs b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.cs new file mode 100644 index 0000000..5911682 --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; + +public partial class Form1 : Form +{ + public Form1() + { + InitializeComponent(); + } + + private List GetPerson() + { + return new List() + { + new Person() {FirstName = "1", MiddleName = "2", SecondName = "3"}, + new Person() {FirstName = "11", MiddleName = "22", SecondName = "33"}, + new Person() {FirstName = "111", MiddleName = "222"}, + new Person() {FirstName = "unknown", Contacts = new Contacts() { PhoneNumber = "1234"} } + }; + } + + private void button1_Click(object sender, EventArgs e) + { + listBox1.Items.Clear(); + var persons = GetPerson(); + + foreach (var person in persons) + { + listBox1.Items.Add($"{person.GetFullName()} | {person.GetPhoneNumber()}"); + } + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.resx b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Person.cs b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Person.cs new file mode 100644 index 0000000..1704c6e --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Person.cs @@ -0,0 +1,18 @@ +public class Person +{ + public string FirstName { get; set; } + public string MiddleName { get; set; } + public string SecondName { get; set; } + + public Contacts Contacts { get; set; } + + public string GetFullName() + { + return $"Фамилия: {FirstName ?? "нет данных"} | Имя: {MiddleName ?? "нет данных"} | Отчество: {SecondName ?? "нет данных"}"; + } + + public string GetPhoneNumber() + { + return $"Phone Number: {Contacts?.PhoneNumber ?? "нет данных"}"; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Program.cs b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Program.cs new file mode 100644 index 0000000..5ec4455 --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Program.cs @@ -0,0 +1,16 @@ +using System; +using System.Windows.Forms; + +static class Program +{ + /// + /// Главная точка входа для приложения. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d8e04dc --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 40_wf - Оператор объекдинения с NULL")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 40_wf - Оператор объекдинения с NULL")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("e936cd37-fc1b-4d05-8be7-b3f29ec393b1")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Resources.Designer.cs b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Resources.Designer.cs new file mode 100644 index 0000000..d1f5461 --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Resources.Designer.cs @@ -0,0 +1,67 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программным средством. +// Версия среды выполнения: 4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если +// код создан повторно. +// +//------------------------------------------------------------------------------ + + +/// +/// Класс ресурсов со строгим типом для поиска локализованных строк и пр. +/// +// Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder +// класс с помощью таких средств, как ResGen или Visual Studio. +// Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen +// с параметром /str или заново постройте свой VS-проект. +[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] +[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] +[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] +internal class Resources +{ + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Возврат кэшированного экземпляра ResourceManager, используемого этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Lesson_40_wf___Оператор_объекдинения_с__NULL.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Переопределяет свойство CurrentUICulture текущего потока для всех + /// подстановки ресурсов с помощью этого класса ресурсов со строгим типом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Resources.resx b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Settings.Designer.cs b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Settings.Designer.cs new file mode 100644 index 0000000..cfd15b6 --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Lesson_40_wf___Оператор_объекдинения_с__NULL.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Settings.settings b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/LessonsAndTasks/Lesson 40_wf - Оператор объекдинения с NULL/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/41_Lesson - Оператор присваивания объединения со значением NULL.csproj b/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/41_Lesson - Оператор присваивания объединения со значением NULL.csproj new file mode 100644 index 0000000..dee3f39 --- /dev/null +++ b/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/41_Lesson - Оператор присваивания объединения со значением NULL.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {8E106150-257D-45F1-84BD-FC7AAE39FF5B} + Exe + Lesson_41___Оператор_присваивания_объединения_со_значением_NULL + Lesson 41 - Оператор присваивания объединения со значением NULL + v4.7.2 + 512 + true + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/App.config b/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/App.config new file mode 100644 index 0000000..ecdcf8a --- /dev/null +++ b/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/Program.cs b/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/Program.cs new file mode 100644 index 0000000..c13f509 --- /dev/null +++ b/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/Program.cs @@ -0,0 +1,16 @@ +/* + * Оператор присваивания объединения со значением NULL ??= + */ +using System; + +class Program +{ + static void Main() + { + string str = null; + //возвращает другую строку если получили NULL - ее длинну + //str ??= "def"; + //Console.WriteLine(str.Length); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e325cc3 --- /dev/null +++ b/LessonsAndTasks/Lesson 41 - Оператор присваивания объединения со значением NULL/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 41 - Оператор присваивания объединения со значением NULL")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 41 - Оператор присваивания объединения со значением NULL")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("8e106150-257d-45f1-84bd-fc7aae39ff5b")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 42 - Оператор условного NULL/42_Lesson - Оператор условного NULL.csproj b/LessonsAndTasks/Lesson 42 - Оператор условного NULL/42_Lesson - Оператор условного NULL.csproj new file mode 100644 index 0000000..22b4bbd --- /dev/null +++ b/LessonsAndTasks/Lesson 42 - Оператор условного NULL/42_Lesson - Оператор условного NULL.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {9737100B-A415-4E7D-ABD1-0D2B89981F16} + Exe + Lesson_42___Оператор_условного_NULL + Lesson 42 - Оператор условного NULL + v4.7.2 + 512 + true + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 42 - Оператор условного NULL/App.config b/LessonsAndTasks/Lesson 42 - Оператор условного NULL/App.config new file mode 100644 index 0000000..ecdcf8a --- /dev/null +++ b/LessonsAndTasks/Lesson 42 - Оператор условного NULL/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/LessonsAndTasks/Lesson 42 - Оператор условного NULL/Program.cs b/LessonsAndTasks/Lesson 42 - Оператор условного NULL/Program.cs new file mode 100644 index 0000000..79bdd59 --- /dev/null +++ b/LessonsAndTasks/Lesson 42 - Оператор условного NULL/Program.cs @@ -0,0 +1,23 @@ +using System; +using System.Linq; + +/* + * Оператор условного NULL ?. + */ +class Program +{ + static int[] GetArray() + { + int[] myArray = null; + return myArray; + } + + static void Main() + { + int[] myArray = GetArray(); + // ?. - проверяет равна ли сумма null или не равна + // ?? - оператор объединения с null + Console.WriteLine(myArray?.Sum() ?? -1); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 42 - Оператор условного NULL/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 42 - Оператор условного NULL/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6f7ddbb --- /dev/null +++ b/LessonsAndTasks/Lesson 42 - Оператор условного NULL/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 42 - Оператор условного NULL")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 42 - Оператор условного NULL")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("9737100b-a415-4e7d-abd1-0d2b89981f16")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/42_2_Lesson - Example 1 - Оператор условного NULL.csproj b/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/42_2_Lesson - Example 1 - Оператор условного NULL.csproj new file mode 100644 index 0000000..1898b7c --- /dev/null +++ b/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/42_2_Lesson - Example 1 - Оператор условного NULL.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {CD0F3063-D5AC-4B78-BC99-729D6FDD7478} + Exe + Lesson_42_2___Example_1___Оператор_условного_NULL + Lesson 42_2 - Example 1 - Оператор условного NULL + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/App.config b/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/Program.cs b/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/Program.cs new file mode 100644 index 0000000..b77c6c1 --- /dev/null +++ b/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/Program.cs @@ -0,0 +1,36 @@ +using System; + +/* + * Оператор условного null + */ +class Program +{ + private static Person GetPerson() + { + Person person = null; + return person; + } + + static void Main() + { + Person person = null; + + Console.WriteLine(person?.Contacts?.PhoneNumber ?? "no data"); + + person = GetPerson(); + + // person, Contacts и PhoneNumber - ссылочные типы - так как они class + Console.WriteLine(person?.Contacts?.PhoneNumber ?? "no data"); + Console.ReadKey(); + } +} + +public class Person +{ + public Contacts Contacts { get; set; } +} + +public class Contacts +{ + public string PhoneNumber { get; set; } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c6c79fe --- /dev/null +++ b/LessonsAndTasks/Lesson 42_2 - Example 1 - Оператор условного NULL/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 42_2 - Example 1 - Оператор условного NULL")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 42_2 - Example 1 - Оператор условного NULL")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("cd0f3063-d5ac-4b78-bc99-729d6fdd7478")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/43_Lesson - Ключевое слово ref, что это и предназначение.csproj b/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/43_Lesson - Ключевое слово ref, что это и предназначение.csproj new file mode 100644 index 0000000..c087a91 --- /dev/null +++ b/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/43_Lesson - Ключевое слово ref, что это и предназначение.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {EB3EC543-CB41-4E1A-9500-9AEF5C3BC0B7} + Exe + Lesson_43___Ключевое_слово_ref__что_это_и_предназначение + Lesson 43 - Ключевое слово ref, что это и предназначение + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/App.config b/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/Program.cs b/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/Program.cs new file mode 100644 index 0000000..72b9892 --- /dev/null +++ b/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/Program.cs @@ -0,0 +1,225 @@ +using System; + +/* + * Ключевое слово ref + */ +/* + * Передача аргументов по ссылке + */ +/* + * ДЗ №1 + * Написать метод Resize() изменяющий количество элементов массива + * (метод должен иметь возможность увеличить или уменьшить число элементов массива) + * + * ДЗ №2 + * Написать методы для добавления элемента в начало массива, в + * конец массива и по указанному индексу + * + * ДЗ №3 + * Написать методы для удаления первого элемента массива, + * последнего элемента массива и элемента по указанному индексу + * + */ +class Program +{ + /// + /// ДЗ №1 + /// + /// # + /// # + /// + public static ref int[] Resize(ref int[] myArray, int counElements) + { + myArray = new int[counElements]; + return ref myArray; + } + + /// + /// DZ_1 LESSON + /// + /// # + /// # + /// # + public static void ResizeLesson(ref T[] array, int newSize) + { + T[] newArray = new T[newSize]; + for (int i = 0; i < array.Length && i < newArray.Length; i++) + { + newArray[i] = array[i]; + } + + array = newArray; + } + + /// + /// ДЗ №2 (insert) + /// + /// # + /// # + /// # + /// int[] + public static ref int[] Rebuild(ref int[] myArray, int index, int value) + { + int res_num = (index > myArray.Length) ? index - myArray.Length : 1; + Array.Resize(ref myArray, myArray.Length + res_num); + switch (index) + { + case 0: + for (int num_el = myArray.Length - 1; num_el > 0; num_el--) + myArray[num_el] = myArray[num_el - 1]; + myArray[0] = value; + break; + default: + if (index < myArray.Length) + { + for (int num_el = myArray.Length - 1; num_el > 0; num_el--) + { + myArray[num_el] = myArray[num_el - 1]; + if (index == num_el) + { + myArray[index - 1] = value; + break; + } + } + } + else + { + myArray[index - 1] = value; + } + break; + } + return ref myArray; + } + + /// + /// ДЗ №3 + /// + /// # + /// # + /// int[] + public static ref int[] DeleteElementArray(ref int[] myArray, int index) + { + int[] tmpArray = new int[myArray.Length]; + Array.Copy(myArray, tmpArray, tmpArray.Length); + myArray = new int[myArray.Length - 1]; + if (index <= tmpArray.Length) + { + int ind = 0; + for (int num_el = 0; num_el < tmpArray.Length; num_el++) + { + if (index - 1 != num_el) + { + myArray[ind] = tmpArray[num_el]; + ind++; + } + } + } + return ref myArray; + } + + //При передаче данные просто копируются из одной переменной в другую + //Сейчас мы не можем повлиять на значение переменной a в Main - они не зависят друг от друга + //Если добавить слово ref то мы помещаем ссылку на саму переменную а не на ее значение и можем менять значение в Main + //параметр помещается по ссылке а не по значению + public static void Foo(ref int a) + { + a = -5; + } + + /* + * Передача аргументов по ссылке + */ + public struct MyStruct + { + public int a; + public double b; + public float c; + } + + /* + * Передача аргументов по ссылке в класс + */ + public class MyClass + { + public int a; + public double b; + public float c; + } + + public static void Foos(ref MyStruct myStruct) + { + myStruct.a = -5; + } + + public static void FooClass(MyClass myClass) + { + myClass.a = -5; + } + + public static void FooArray(int[] myArr) + { + myArr[0] = -5; + } + + public static void FooArrayClear(ref int[] myArr) + { + myArr = null; + } + + public static ref int FooArrayReturn(int[] myArr) + { + return ref myArr[0]; + } + + /// + /// ref - позволяет произвести действия над ссылкой а не над данными + /// + static void Main() + { + int a = 2; + Foo(ref a); + + MyStruct Mystruct = new MyStruct(); + MyClass myClass = new MyClass(); + int[] myArray = { 1, 4, 6 }; + + Foos(ref Mystruct); + + FooClass(myClass); + + FooArray(myArray); + + FooArrayClear(ref myArray); + + Console.WriteLine(a); + + //Фишка Ссылочных локальных переменных + //Через слово ref присваиваем ссылку на переменную в массиве + int[] myArr_2 = { 1, 2, 3 }; + ref int el = ref myArr_2[2]; + el = 6; + Console.WriteLine(myArr_2[2]); + + ref int bq = ref FooArrayReturn(myArr_2); + + //ДЗ №1 + int[] dz_1 = { 4, 2 }; + string[] dz_1_2 = { "aaa", "vbvv" }; + Array.Resize(ref dz_1, 10); + Resize(ref dz_1, 10); + ResizeLesson(ref dz_1, 10); + ResizeLesson(ref dz_1_2, 10); + Console.WriteLine(dz_1[7]); + + //ДЗ №2 + int[] dz_2 = { 1, 2, 3, 2, 4, 5, 6 }; + + Rebuild(ref dz_2, 0, 10); + Console.WriteLine(dz_2[0]); + + //ДЗ №3 + int[] dz_3 = { 44, 33, 11, 4 }; + DeleteElementArray(ref dz_3, 1); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..5228944 --- /dev/null +++ b/LessonsAndTasks/Lesson 43 - Ключевое слово ref, что это и предназначение/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 43 - Ключевое слово ref, что это и предназначение")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 43 - Ключевое слово ref, что это и предназначение")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("eb3ec543-cb41-4e1a-9500-9aef5c3bc0b7")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/44_Lesson - Ключевое слово out, разница out и ref.csproj b/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/44_Lesson - Ключевое слово out, разница out и ref.csproj new file mode 100644 index 0000000..f1d896d --- /dev/null +++ b/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/44_Lesson - Ключевое слово out, разница out и ref.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {ACE28A2C-EB6B-4244-B493-DD99867CB90D} + Exe + Lesson_44___Ключевое_слово_out__разница_out_и_ref + Lesson 44 - Ключевое слово out, разница out и ref + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/App.config b/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/Program.cs b/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/Program.cs new file mode 100644 index 0000000..0712b04 --- /dev/null +++ b/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/Program.cs @@ -0,0 +1,38 @@ +using System; +using System.Text; + +/* + * Ключевое слово out + * Разница между ref и out + */ +class Program +{ + public static void Foo(ref int value) + { + value++; + System.Console.WriteLine(value); + } + + /// + /// Change input val + /// out - обязывает нас присваивать значение переменной внутри метода + /// + /// value + public static void Bar(out int value) + { + value = 0; + System.Console.WriteLine(value); + } + + static void Main() + { + int a = 10; + int aa; + Foo(ref a); + Bar(out aa); + string str = "3"; + int.TryParse(str, out int result); + Bar(out int aaa); // сразу можем объявить внутри метода с out + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..89af577 --- /dev/null +++ b/LessonsAndTasks/Lesson 44 - Ключевое слово out, разница out и ref/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 44 - Ключевое слово out, разница out и ref")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 44 - Ключевое слово out, разница out и ref")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("ace28a2c-eb6b-4244-b493-dd99867cb90d")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/45_Lesson - Модификатор in, разница in ref и out.csproj b/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/45_Lesson - Модификатор in, разница in ref и out.csproj new file mode 100644 index 0000000..4503a0a --- /dev/null +++ b/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/45_Lesson - Модификатор in, разница in ref и out.csproj @@ -0,0 +1,56 @@ + + + + + Debug + AnyCPU + {BFE4216D-7D2E-416A-834D-43AA1C639524} + Exe + Lesson_45___Модификатор_in__разница_in_ref_и_out + Lesson 45 - Модификатор in, разница in ref и out + v4.7.2 + 512 + true + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + 7.2 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + 7.2 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/App.config b/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/App.config new file mode 100644 index 0000000..ecdcf8a --- /dev/null +++ b/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/Program.cs b/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/Program.cs new file mode 100644 index 0000000..01e731c --- /dev/null +++ b/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/Program.cs @@ -0,0 +1,83 @@ +using System; +using System.Diagnostics; + +/* + * Ключевое слово in + */ +class Program +{ + private static float k = 0; + + struct Point + { + public float x; + public float y; + public float z; + public decimal e; + public decimal e1; + public decimal e2; + public decimal e3; + public decimal e4; + public decimal e5; + public decimal e6; + public decimal e7; + public decimal e8; + public decimal e9; + public decimal e0; + public decimal e11; + public decimal e12; + public decimal e13; + public decimal e14; + public decimal e15; + } + + static void Fos(Point value) + { + + } + + static void Bar(in Point value) + { + k = value.x; + } + + /// + /// in позволяет только извлечь данные из переменной + /// полезно для структур, для экономии памяти + /// + /// + public static void Foo(in int value) + { + Console.WriteLine(value); + } + + static void Main() + { + Point a = new Point(); + a.x = 5; + + Stopwatch sw = Stopwatch.StartNew(); + + for (int i = 0; i < int.MaxValue; i++) + { + Fos(a); + } + + sw.Stop(); + + Console.WriteLine($"Fos {sw.ElapsedMilliseconds}"); + + sw.Restart(); + + for (int i = 0; i < int.MaxValue; i++) + { + Bar(a); + } + + sw.Stop(); + + Console.WriteLine($"Bar {sw.ElapsedMilliseconds}"); + Console.WriteLine(k); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..68829d4 --- /dev/null +++ b/LessonsAndTasks/Lesson 45 - Модификатор in, разница in ref и out/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 45 - Модификатор in, разница in ref и out")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 45 - Модификатор in, разница in ref и out")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("bfe4216d-7d2e-416a-834d-43aa1c639524")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 46 - Ключевое слово params/46_Lesson - Ключевое слово params.csproj b/LessonsAndTasks/Lesson 46 - Ключевое слово params/46_Lesson - Ключевое слово params.csproj new file mode 100644 index 0000000..38ae24f --- /dev/null +++ b/LessonsAndTasks/Lesson 46 - Ключевое слово params/46_Lesson - Ключевое слово params.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {69B61D89-B578-4F07-9DD5-7204D4F682BD} + Exe + Lesson_46___Ключевое_слово_params + Lesson 46 - Ключевое слово params + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 46 - Ключевое слово params/App.config b/LessonsAndTasks/Lesson 46 - Ключевое слово params/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 46 - Ключевое слово params/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 46 - Ключевое слово params/Program.cs b/LessonsAndTasks/Lesson 46 - Ключевое слово params/Program.cs new file mode 100644 index 0000000..518af35 --- /dev/null +++ b/LessonsAndTasks/Lesson 46 - Ключевое слово params/Program.cs @@ -0,0 +1,66 @@ +using System; + +/* + * Ключевое слово params + */ +class Program +{ + private static int Sum(int a, int b) + { + return a + b; + } + + private static int Sum(int a, int b, int c) + { + return a + b + c; + } + + /// + /// Бонус + /// + /// список параметров + private static void ParObj(params object[] parameters) + { + string message = "Тип данных {0}, значение {1}"; + foreach (var item in parameters) + { + System.Console.WriteLine(message, item.GetType(), item); + } + } + + /// + /// params - для того чтобы передавать параметры отдельно через запятую + /// * не может быть двух params в методе + /// * другой обычный параметр должен быть перед params + /// + /// сообщение + /// список параметров + /// + private static int SumParams(string message, params int[] parameters) + { + int result = 0; + + for (int i = 0; i < parameters.Length; i++) + { + result += parameters[i]; + } + + //or + //parameters.Sum(); + + return result; + } + + static void Main() + { + int result = Sum(5, 10); + + Console.WriteLine(result); + + Console.WriteLine(SumParams("message", 1, 2, 3, 4)); + + // *Бонус + ParObj(1, 1.0, 1f, "dd", 'a', true); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 46 - Ключевое слово params/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 46 - Ключевое слово params/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c4af7f3 --- /dev/null +++ b/LessonsAndTasks/Lesson 46 - Ключевое слово params/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 46 - Ключевое слово params")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 46 - Ключевое слово params")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("69b61d89-b578-4f07-9dd5-7204d4f682bd")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/47_Lesson - Необязательные параметры метода (параметры по умолчанию).csproj b/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/47_Lesson - Необязательные параметры метода (параметры по умолчанию).csproj new file mode 100644 index 0000000..b6645db --- /dev/null +++ b/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/47_Lesson - Необязательные параметры метода (параметры по умолчанию).csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {9B7F8691-E337-4CA4-9E24-46EF69803734} + Exe + Lesson_47___Необязательные_параметры_метода__параметры_по_умолчанию_ + Lesson 47 - Необязательные параметры метода %28параметры по умолчанию%29 + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/App.config b/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/Program.cs b/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/Program.cs new file mode 100644 index 0000000..761cf2e --- /dev/null +++ b/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/Program.cs @@ -0,0 +1,34 @@ +using System; + +/* + * Необязательные параметры методов + */ +class Program +{ + /// + /// Параметры по умолчанию всегда должны быть в конце списка + /// + /// # + /// # + /// Logging + /// + private static int Sum(int a, int b, bool enableLogging = false) + { + int result = a + b; + + if (enableLogging) + { + Console.WriteLine($"Значение переменной a = {a}"); + Console.WriteLine($"Значение переменной b = {b}"); + Console.WriteLine($"Значение переменной result = {result}"); + } + + return result; + } + + static void Main() + { + Sum(2, 3); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9314a54 --- /dev/null +++ b/LessonsAndTasks/Lesson 47 - Необязательные параметры метода (параметры по умолчанию)/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 47 - Необязательные параметры метода (параметры по умолчанию)")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 47 - Необязательные параметры метода (параметры по умолчанию)")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("9b7f8691-e337-4ca4-9e24-46ef69803734")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 48 - Именнованные параметры/48_Lesson - Именнованные параметры.csproj b/LessonsAndTasks/Lesson 48 - Именнованные параметры/48_Lesson - Именнованные параметры.csproj new file mode 100644 index 0000000..caf0725 --- /dev/null +++ b/LessonsAndTasks/Lesson 48 - Именнованные параметры/48_Lesson - Именнованные параметры.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {A3DCBFE2-2D22-4464-9F15-3D71EDBB5F4D} + Exe + Lesson_48___Именнованные_параметры + Lesson 48 - Именнованные параметры + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 48 - Именнованные параметры/App.config b/LessonsAndTasks/Lesson 48 - Именнованные параметры/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 48 - Именнованные параметры/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 48 - Именнованные параметры/Program.cs b/LessonsAndTasks/Lesson 48 - Именнованные параметры/Program.cs new file mode 100644 index 0000000..524f0b6 --- /dev/null +++ b/LessonsAndTasks/Lesson 48 - Именнованные параметры/Program.cs @@ -0,0 +1,41 @@ +using System; + +/* + * Именнованные параметры + */ + +class Program +{ + /// + /// Параметры по умолчанию всегда должны быть в конце списка + /// + /// + /// + /// + /// + private static int Sum(int a, int b, bool enableLogging = false) + { + int result = a + b; + + if (enableLogging) + { + Console.WriteLine($"Значение переменной a = {a}"); + Console.WriteLine($"Значение переменной b = {b}"); + Console.WriteLine($"Значение переменной result = {result}"); + } + + return result; + } + + static void Main() + { + Sum(a: 1, b: 2); + + int firstValue = 2; + int secondValue = 3; + + //Чтобы внести ясность тому что выполнит функция + Sum(a: firstValue, b: secondValue, enableLogging: true); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 48 - Именнованные параметры/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 48 - Именнованные параметры/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..20dcafa --- /dev/null +++ b/LessonsAndTasks/Lesson 48 - Именнованные параметры/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 48 - Именнованные параметры")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 48 - Именнованные параметры")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("a3dcbfe2-2d22-4464-9f15-3d71edbb5f4d")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/49_Lesson - Что такое рекурсия, переполнение стека.csproj b/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/49_Lesson - Что такое рекурсия, переполнение стека.csproj new file mode 100644 index 0000000..74bdfdd --- /dev/null +++ b/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/49_Lesson - Что такое рекурсия, переполнение стека.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {AE6951C4-54B0-4EC4-8E52-8BF73EF1766C} + Exe + Lesson_49___Что_такое_рекурсия__переполнение_стека + Lesson 49 - Что такое рекурсия, переполнение стека + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/App.config b/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/Program.cs b/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/Program.cs new file mode 100644 index 0000000..fa8242f --- /dev/null +++ b/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/Program.cs @@ -0,0 +1,151 @@ +using System; + +/* + * Рекурсия + * + * Методы и стек + * + * Переполнение стека + */ +/* + * ДЗ 1 + * Реализовать вывод массива с помощью рекурсии + * + * ДЗ 2 + * Найти сумму элементов массива с помощью рекурсии + * + * ДЗ 3 + * Найти сумму цифр числа с помощью рекурсии Например - 561(число) = 12(сумма его чисел) + */ +class Program +{ + class Item + { + public int Value { get; set; } + public Item Child { get; set; } + } + + + static Item InitItem() + { + return new Item() + { + Value = 5, + Child = new Item() + { + Value = 5, + Child = new Item() + { + Value = 2 + } + } + }; + } + + static void Print(Item item) + { + if (item != null) + { + Console.WriteLine(item.Value); + Print(item.Child); + } + } + + /// + /// Когда метод вызывает сам себя - рекурсия + /// Обязательно нужно предусматривать условие выхода из рекурсии + /// Недостаток - использовать можно только для коротких операций с малым числом переменных + /// + /// + private static void Foo(int i) + { + Console.WriteLine(i); + if (i >= 3) + return; + i++; + Foo(i); + } + + /// + /// DZ_1 + /// + /// # + /// # + /// # + private static void PrintArray(T[] array, int index = 0) + { + Console.WriteLine(array[index]); + if (index + 1 == array.Length) + return; + index++; + + PrintArray(array, index); + } + + /// + /// DZ_2 + /// + /// # + /// # + /// # + private static void SumArray(int[] array, int index = 0, int Sum = 0) + { + Sum += array[index]; + if (index + 1 == array.Length) + { + Console.WriteLine("Summa: " + Sum); + return; + } + index++; + + SumArray(array, index, Sum); + } + + /// + /// DZ_3 + /// + /// # + /// # + /// # + private static void SumNumber(int number, int indexSymphol = 0, int Summa = 0) + { + int sym = 0; + int.TryParse((number.ToString()[indexSymphol]).ToString(), out sym); + Summa += sym; + if (indexSymphol + 1 == number.ToString().Length) + { + Console.WriteLine("Summa_Number: " + Summa); + return; + } + indexSymphol++; + + SumNumber(number, indexSymphol, Summa); + } + + static void Main() + { + Foo(0); + + Item item = InitItem(); + + Print(item); + //или + for (Item i = item; i != null; i = i.Child) + { + Console.WriteLine(i.Value); + } + + //DZ 1 + string[] dz_1 = { "33", "22", "11" }; + PrintArray(dz_1); + + //DZ 2 + int[] dz_2 = { 1, 3, 4 }; + SumArray(dz_2); + + //DZ 3 + int num = 564; + SumNumber(num); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..f9f7183 --- /dev/null +++ b/LessonsAndTasks/Lesson 49 - Что такое рекурсия, переполнение стека/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 49 - Что такое рекурсия, переполнение стека")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 49 - Что такое рекурсия, переполнение стека")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("ae6951c4-54b0-4ec4-8e52-8bf73ef1766c")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert.sln b/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert.sln new file mode 100644 index 0000000..b0457b8 --- /dev/null +++ b/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1738 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson 5 - конвертация строки, класс Convert", "Lesson 5 - конвертация строки, класс Convert\Lesson 5 - конвертация строки, класс Convert.csproj", "{57ACDCF4-1C18-4EDE-9F92-4BA2791B523C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {57ACDCF4-1C18-4EDE-9F92-4BA2791B523C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {57ACDCF4-1C18-4EDE-9F92-4BA2791B523C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {57ACDCF4-1C18-4EDE-9F92-4BA2791B523C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {57ACDCF4-1C18-4EDE-9F92-4BA2791B523C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {54F5E914-0F5C-4595-A873-C27A4281DAC7} + EndGlobalSection +EndGlobal diff --git a/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/05_Lesson - конвертация строки, класс Convert.csproj b/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/05_Lesson - конвертация строки, класс Convert.csproj new file mode 100644 index 0000000..c433af4 --- /dev/null +++ b/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/05_Lesson - конвертация строки, класс Convert.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {57ACDCF4-1C18-4EDE-9F92-4BA2791B523C} + Exe + Lesson_5___конвертация_строки__класс_Convert + Lesson 5 - конвертация строки, класс Convert + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/App.config b/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/Program.cs b/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/Program.cs new file mode 100644 index 0000000..9442c74 --- /dev/null +++ b/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/Program.cs @@ -0,0 +1,58 @@ +using System; +using System.Globalization; + +/* + * конвертация строки + * класс Convert + */ +class Program +{ + static void Main() + { + string str = "5"; + string str2 = "2"; + string str3 = "1,3"; + string str4 = "1.5"; + + var numberFormatInfo = new NumberFormatInfo() + { + NumberDecimalSeparator = ".", + }; + + double db = Convert.ToDouble(str3); + double db1 = Convert.ToDouble(str4, numberFormatInfo); + + Console.WriteLine(db); + Console.WriteLine(db1); + + Console.WriteLine(str + str2); + + int a = Convert.ToInt32(str); // Демонстрация Convert + + Console.WriteLine(a); + + Console.WriteLine("\t"); + + string str1; + + int a1 = 0, a2 = 0, result; + + Console.WriteLine("Введите первое число: "); + + str1 = Console.ReadLine(); + + if(!string.IsNullOrWhiteSpace(str1)) + a1 = Convert.ToInt32(str1); + + Console.WriteLine("Введите второе число: "); + + str1 = Console.ReadLine(); + + if (!string.IsNullOrWhiteSpace(str1)) + a2 = Convert.ToInt32(str1); + + result = a1 + a2; + + Console.WriteLine("Сумма чисел: " + result); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a0aa7b5 --- /dev/null +++ b/LessonsAndTasks/Lesson 5 - Конвертация строки, класс Convert/Lesson 5 - конвертация строки, класс Convert/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 5 - конвертация строки, класс Convert")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 5 - конвертация строки, класс Convert")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("57acdcf4-1c18-4ede-9f92-4ba2791b523c")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/50_Lesson - Преобразование и приведение, явное и неявное.csproj b/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/50_Lesson - Преобразование и приведение, явное и неявное.csproj new file mode 100644 index 0000000..7ad9641 --- /dev/null +++ b/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/50_Lesson - Преобразование и приведение, явное и неявное.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {4E053D6F-23F8-4262-8331-7852E8788FB2} + Exe + Lesson_50___Преобразование_и_приведение__явное_и_неявное + Lesson 50 - Преобразование и приведение, явное и неявное + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/App.config b/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/Program.cs b/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/Program.cs new file mode 100644 index 0000000..833ec8e --- /dev/null +++ b/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/Program.cs @@ -0,0 +1,31 @@ +using System; + +/* + * Преобразование и приведение примитивных типов в C# + */ +class Program +{ + static void Foo(float value) + { + Console.WriteLine(value); + } + + static void Main() + { + int a = 5; + double aa = 5.7; + Foo(a); // Пример не явного преобразования implicit - (расширяющее преобразование) + Foo((float)aa); // Пример явного преобразования explicit (сужающее преобразование) - больший обьект в меньшую упаковку положили + int h = 500; + byte k = (byte)h; + int b = 800; + bool k_r = Convert.ToBoolean(b); + int u = 300; + float uu = 400F; + float res_f = u + uu; + int uuu = 300; + float uuuu = 400F; + int res_ff = (int)(uuu + uuuu); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..80a4d64 --- /dev/null +++ b/LessonsAndTasks/Lesson 50 - Преобразование и приведение, явное и неявное/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 50 - Преобразование и приведение, явное и неявное")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 50 - Преобразование и приведение, явное и неявное")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("4e053d6f-23f8-4262-8331-7852e8788fb2")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/51_Lesson - Арифметическое переполнение, checked unchecked.csproj b/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/51_Lesson - Арифметическое переполнение, checked unchecked.csproj new file mode 100644 index 0000000..31399e9 --- /dev/null +++ b/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/51_Lesson - Арифметическое переполнение, checked unchecked.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {768CA07B-FAC9-4233-BB4A-E522E5CED0FA} + Exe + Lesson_51___Арифметическое_переполнение__checked_unchecked + Lesson 51 - Арифметическое переполнение, checked unchecked + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/App.config b/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/Program.cs b/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/Program.cs new file mode 100644 index 0000000..df5b98b --- /dev/null +++ b/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/Program.cs @@ -0,0 +1,48 @@ +using System; + +/* + * "Ядерный Ганди" и аримфметическое переполнение + */ +class Program +{ + static void Main() + { + #region Для целочисленных типов данных + byte agression = 1; + + byte democracyModifier = 2; + + try + { + // Если вычесть из 1 2, то будет 255 а не 0, это арифметическое переполнение + // и слово checked это проверяет - uncehcked {} выключает проверку переполнения + agression = checked((byte)(agression - democracyModifier)); // Служащее преобразование данных + Console.WriteLine(agression); + } + catch (OverflowException) + { + Console.WriteLine("Error"); + } + #endregion + + #region Для дробных типов данных + double a = 1.0 / 0.0; + + Console.WriteLine(double.IsInfinity(a)); // output: True + + double b = 0.0 / 0.0; + + Console.WriteLine(double.IsNaN(b)); // output: True + + double c = double.MaxValue + double.MinValue; + + Console.WriteLine(double.IsInfinity(c)); // output: True + + decimal aa = decimal.MaxValue; + decimal bb = decimal.MaxValue; + // *Для арифметических операндов типа decimal переполнение всегда показывает исключение + // decimal cc = unchecked(a + b); + #endregion + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ec53d6f --- /dev/null +++ b/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 51 - Арифметическое переполнение, checked unchecked")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 51 - Арифметическое переполнение, checked unchecked")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("768ca07b-fac9-4233-bb4a-e522e5ced0fa")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/52_Lesson - Что такое Nullable, Null совместимые значимые типы Nullable.csproj b/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/52_Lesson - Что такое Nullable, Null совместимые значимые типы Nullable.csproj new file mode 100644 index 0000000..d273722 --- /dev/null +++ b/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/52_Lesson - Что такое Nullable, Null совместимые значимые типы Nullable.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {B2FBBA96-D2CA-4051-A9FF-36D4FD2FE1BC} + Exe + Lesson_52___Что_такое_Nullable__Null_совместимые_значимые_типы_Nullable + Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/App.config b/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/ClassDiagram1.cd b/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/ClassDiagram1.cd new file mode 100644 index 0000000..7b89419 --- /dev/null +++ b/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/ClassDiagram1.cd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/Program.cs b/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/Program.cs new file mode 100644 index 0000000..51d2691 --- /dev/null +++ b/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/Program.cs @@ -0,0 +1,40 @@ +using System; + +/* + * Null - совместимые значимые типы (Nullable) + */ +class Program +{ + static void Main() + { + string str = null; + + int? a = null; + // Проверить есть ли в Nullable переменной значение + Console.WriteLine(a == null); // True + Console.WriteLine(a.HasValue); // False + Console.WriteLine(a.GetValueOrDefault()); // 0 + Console.WriteLine(a.GetValueOrDefault(3)); // 3 + Console.WriteLine(a ?? 55); // 55 + try + { + Console.WriteLine(a.Value); // InvalidOperationException + } + catch (Exception) + { + Console.WriteLine("InvalidOperationException"); + } + DateTime? dateTime = null; + Nullable dateTime1 = null; + Console.WriteLine(dateTime1); + + int? aa = 5; + int? b = 22; + int? result = a + b; + Console.WriteLine(result); + Console.WriteLine(aa == b); + Console.WriteLine(a > b); + Console.WriteLine(a < b); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7278d5d --- /dev/null +++ b/LessonsAndTasks/Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("b2fbba96-d2ca-4051-a9ff-36d4fd2fe1bc")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/53_Lesson - var . Это не тип данных. Неявно типизированные переменные.csproj b/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/53_Lesson - var . Это не тип данных. Неявно типизированные переменные.csproj new file mode 100644 index 0000000..35838bf --- /dev/null +++ b/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/53_Lesson - var . Это не тип данных. Неявно типизированные переменные.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {E927DC0E-7736-47FF-B661-96534265380B} + Exe + Lesson_53___var.Это_не_тип_данных.Неявно_типизированные_переменные + Lesson_53___var.Это_не_тип_данных.Неявно_типизированные_переменные + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/App.config b/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/Program.cs b/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/Program.cs new file mode 100644 index 0000000..81d7659 --- /dev/null +++ b/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/Program.cs @@ -0,0 +1,71 @@ +using System; +using System.Linq; +using System.Diagnostics; +using System.Collections.Generic; + +/* + * Ключевое слово var + * + * Неявно типизированные локальные переменные + */ +class Program +{ + static int Sum_Int(int a, int b) + { + int aa = a + b; + return aa; + } + static int Sum_Var(int a, int b) + { + var aa = a + b; + return aa; + } + + static void Main() + { + var u = 5; + + // Когда полезен? + // 1 - сократить длинну кода + var dict = new Dictionary(); + var list = new List(); + // 2 - создать анонимный тип данных + var obj = new { Name = "Мартин", Age = 25 }; + + // 3 - использовать при выборке элементов в массиве + int[] numbers = { 1, 2, 3, 2, 4, 5 }; + var result = from i in numbers where i > 1 select i; + foreach (var item in result) + Console.WriteLine($"{item}\t"); + + + Stopwatch sw = Stopwatch.StartNew(); + // 4 - когда нужно получить результат выполнения метода + for (int i = 0; i < int.MaxValue; i++) + { + var sum_int = Sum_Int(1, i); + } + sw.Stop(); + Console.WriteLine($"Sum_Int {sw.ElapsedMilliseconds}"); + sw.Restart(); + for (int i = 0; i < int.MaxValue; i++) + { + var sum_var = Sum_Var(1, i); + } + sw.Stop(); + Console.WriteLine($"Sum_Var {sw.ElapsedMilliseconds}"); + + + /* + * Не может быть использовано параметром метода + * static void Bar (var a) + * Не может быть типом возвращаемого значения + * static var Foo() + * Не может быть полями класса + * class MyClass { public var a} + */ + Console.WriteLine(); + Console.WriteLine(u.GetType()); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6f353b7 --- /dev/null +++ b/LessonsAndTasks/Lesson 53 - var . Это не тип данных. Неявно типизированные переменные/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 53 - var . Это не тип данных. Неявно типизированные переменные")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 53 - var . Это не тип данных. Неявно типизированные переменные")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("e927dc0e-7736-47ff-b661-96534265380b")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/54_Lesson - enum, что это, и для чего нужно - перечисления.csproj b/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/54_Lesson - enum, что это, и для чего нужно - перечисления.csproj new file mode 100644 index 0000000..5082483 --- /dev/null +++ b/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/54_Lesson - enum, что это, и для чего нужно - перечисления.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {56F7519C-2D4F-4939-B7DB-295EC0BDBF6C} + Exe + Lesson_54___enum__что_это__и_для_чего_нужно___перечисления + Lesson 54 - enum, что это, и для чего нужно - перечисления + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/App.config b/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/Program.cs b/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/Program.cs new file mode 100644 index 0000000..48c2c13 --- /dev/null +++ b/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/Program.cs @@ -0,0 +1,105 @@ +using System; + +/* + * enum (перечисления) + */ +class Program +{ + public enum DayOfWeek : byte + { + Monday = 1, + Tuesday = 2, + Wednesday = 3, + Thursday = 4, + Friday = 5, + Saturday = 6, + Sunday = 7 + } + + enum Color + { + White, + Red, + Green, + Blue, + Orange + } + + public static void Main() + { + while (true) + { + ConsoleKey key = Console.ReadKey().Key; + + int keyCode = (int)key; + + Console.WriteLine($"\tEnum {key} \tKey Code {keyCode}"); + + if (key == ConsoleKey.Enter) + Console.WriteLine("Enter"); + + DayOfWeek dayOfWeek = DayOfWeek.Monday; + + // получаем тип данных + Console.WriteLine(Enum.GetUnderlyingType(typeof(DayOfWeek)).Name); + + Console.WriteLine(dayOfWeek); + + // приводим dayofweek к int + Console.WriteLine((int)dayOfWeek); + // приводим dayofweek к Dayofweek к int + int value = 3; + // Проверяем существования дня под таким номером в перечислении + if (Enum.IsDefined(typeof(DayOfWeek), (DayOfWeek)value)) + Console.WriteLine((DayOfWeek)value); + // получаем следующий день + DayOfWeek nextday = GetNextDay(dayOfWeek); + Console.WriteLine(nextday); + + // получить и вывести сразу все значения перечисления + var values = Enum.GetValues(typeof(Color)); + + foreach (var item in values) + { + Console.WriteLine(item); + } + + Console.WriteLine("Write to name Color [White][Red][Green][Blue][Orange]"); + // перечисления можно парсить + string str = Console.ReadLine(); + // ignoreCase - игнорировать большие и маленькие буквы + Color color = (Color)Enum.Parse(typeof(Color), str, ignoreCase: true); + Console.WriteLine(color); + + // ну и фишка которая известна из начальных уроков + switch (color) + { + case Color.White: + break; + case Color.Red: + break; + case Color.Green: + break; + case Color.Blue: + break; + case Color.Orange: + break; + default: + break; + } + } + } + + /// + /// получаем следующий день + /// + /// day/param> + /// DayOfWeek + public static DayOfWeek GetNextDay(DayOfWeek day) + { + if (day < DayOfWeek.Sunday) + return day + 1; + + return DayOfWeek.Monday; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ccdb0b4 --- /dev/null +++ b/LessonsAndTasks/Lesson 54 - enum, что это, и для чего нужно - перечисления/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 54 - enum, что это, и для чего нужно - перечисления")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 54 - enum, что это, и для чего нужно - перечисления")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("56f7519c-2d4f-4939-b7db-295ec0bdbf6c")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/55_Lesson - Что такое КЛАСС - ООП, объект, экземпляр класса.csproj b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/55_Lesson - Что такое КЛАСС - ООП, объект, экземпляр класса.csproj new file mode 100644 index 0000000..4bf54d3 --- /dev/null +++ b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/55_Lesson - Что такое КЛАСС - ООП, объект, экземпляр класса.csproj @@ -0,0 +1,55 @@ + + + + + Debug + AnyCPU + {730EDE55-501D-4A60-B7E8-F6ADC743159C} + Exe + Lesson_55___Что_такое_КЛАСС___ООП__объект__экземпляр_класса + Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/App.config b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/ClassDiagram1.cd b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/ClassDiagram1.cd new file mode 100644 index 0000000..30deedd --- /dev/null +++ b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/ClassDiagram1.cd @@ -0,0 +1,39 @@ + + + + + + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAABgAAAAAAA= + Program.cs + + + + + + + + + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAEAAA= + Program.cs + + + + + + QAAAAAAAAABAQAAAAAAAAAAAEAAAAAAAAAAACAAAAgA= + Student.cs + + + + + + + + + + AAACAAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAADAAAAA= + Program.cs + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Program.cs b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Program.cs new file mode 100644 index 0000000..5b665d4 --- /dev/null +++ b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Program.cs @@ -0,0 +1,88 @@ +using System; + +/* + * ООП + * класс + * объект класса + */ +enum Color +{ + Red, + Green, + Orange, + Yellow, + Blue +} + +/// +/// ТОЧКА +/// Класс - это некий чертеж +/// Класс - это наш собственный тип данных +/// Класс - это ссылочный тип данных (мы должны выделить место в управляемой куче где он будет размещен) +/// Переменные внутри класса - называются поля со своими модификаторами доступа +/// +class Point +{ + public int x; + public int y; + public Color color; +} + +/// +/// Основной класс +/// +class Program +{ + static Students GetStudent() + { + return new Students + { + id = Guid.NewGuid(), + firstName = "first", + lastName = "last", + middleName = "middle", + age = 24, + group = "professional" + }; + } + + static void Print(Students student_val) + { + Console.WriteLine($"id: {student_val.id}, firstName: {student_val.firstName},\n" + + $"lastName: {student_val.lastName}, middleName: {student_val.middleName},\n" + + $"age: {student_val.age}, group: {student_val.group}"); + } + + //*Любой обьект в языке C# является наследником типа object + static void Main() + { + // экземпляр(объект) класса - это уже готовый построенный дом + Point point_1 = new Point(); + point_1.x = 4; + point_1.y = 2; + + Console.WriteLine($" x: {point_1.x}, y: {point_1.y}"); + + Point point_2 = new Point(); + point_2.x = 2; + point_2.y = 6; + + // Доказательство, того что класс - ссылочный тип + Point test = new Point(); + test = null; + // мы разорвали связь между данными в управляемой куче и объектом класса + // test.x = 4; + // test.y = 2; + + Point point_3 = new Point(); + point_3.x = 4; + point_3.y = 2; + point_3.color = Color.Orange; + Console.WriteLine($"X: {point_3.x} | Y: {point_3.y} | Color: {point_3.color}"); + + // Student + var firstStudent = GetStudent(); + Print(firstStudent); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e2e92c9 --- /dev/null +++ b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("730ede55-501d-4a60-b7e8-f6adc743159c")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Student.cs b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Student.cs new file mode 100644 index 0000000..05c924e --- /dev/null +++ b/LessonsAndTasks/Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса/Student.cs @@ -0,0 +1,19 @@ +using System; + +/// +/// *описали характеристики обьекта, шаблона этого класса +/// *главный плюс - можем вынести класс в отдельный файл - чтобы не городить код в одну кучу +/// *если лежит в том же namespace то можем видеть его, если нет то нужно внести using +/// +class Students +{ + /// + /// Cпециальная структура для описания объекта, создания уникальных id + /// + public Guid id; + public string firstName; + public string lastName; + public string middleName; + public int age; + public string group; +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/56_Lesson - Методы и классы, ООП, вызов метода экземпляра класса.csproj b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/56_Lesson - Методы и классы, ООП, вызов метода экземпляра класса.csproj new file mode 100644 index 0000000..c797525 --- /dev/null +++ b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/56_Lesson - Методы и классы, ООП, вызов метода экземпляра класса.csproj @@ -0,0 +1,56 @@ + + + + + Debug + AnyCPU + {E6B73F3E-92DD-4737-8FF8-A78B97CB387C} + Exe + Lesson_56___Методы_и_классы__ООП__вызов_метода_объекта_класса + Lesson 56 - Методы и классы, ООП, вызов метода объекта класса + v4.6.1 + 512 + true + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/App.config b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/App.config new file mode 100644 index 0000000..bae5d6d --- /dev/null +++ b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Car.cs b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Car.cs new file mode 100644 index 0000000..5f9ce04 --- /dev/null +++ b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Car.cs @@ -0,0 +1,34 @@ +using System; + +class Car +{ + private int speed = 0; + + /// + /// Пример инкапсуляции поля speed + /// + public void PrintSpeed() + { + if (speed == 0) + Console.WriteLine("Стоим на месте"); + if (speed > 0) + Console.WriteLine($"Едем вперед со скоростью {speed} км\\ч"); + if (speed < 0) + Console.WriteLine($"Едем назад со скоростью {-speed} км\\ч"); + } + + public void DriveForward() + { + speed = 60; + } + + public void Stop() + { + speed = 0; + } + + public void DriveBackward() + { + speed = -60; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Program.cs b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Program.cs new file mode 100644 index 0000000..ecbc469 --- /dev/null +++ b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Program.cs @@ -0,0 +1,48 @@ +using System; + +/* + * ООП + * методы объекта класса + */ + +class Program +{ + static Student GetStudent() + { + return new Student + { + id = Guid.NewGuid(), + firstName = "first", + lastName = "last", + middleName = "middle", + age = 24, + group = "professional" + }; + } + + /// + /// Функции и методы это одно и то же разница + /// Функция которая является членом класса это метод (функций без классов не может быть) + /// + static void Main() + { + var firstStudent = GetStudent(); + firstStudent.Print(); + string fullname = firstStudent.GetFullName(); + + Console.WriteLine("\t== Car 1 =="); + var car_1 = new Car(); + car_1.PrintSpeed(); + car_1.DriveForward(); + car_1.PrintSpeed(); + car_1.Stop(); + car_1.PrintSpeed(); + + Console.WriteLine("\t== Car 2 =="); + var car_2 = new Car(); + car_2.PrintSpeed(); + car_2.DriveBackward(); + car_2.PrintSpeed(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..32d73fa --- /dev/null +++ b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 56 - Методы и классы, ООП, вызов метода объекта класса")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 56 - Методы и классы, ООП, вызов метода объекта класса")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("e6b73f3e-92dd-4737-8ff8-a78b97cb387c")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Student.cs b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Student.cs new file mode 100644 index 0000000..13a975b --- /dev/null +++ b/LessonsAndTasks/Lesson 56 - Методы и классы, ООП, вызов метода объекта класса/Student.cs @@ -0,0 +1,26 @@ +using System; + +class Student +{ + /// + /// Cпециальная структура для описания объекта, создания уникальных id + /// + public Guid id; + public string firstName; + public string lastName; + public string middleName; + public int age; + public string group; + + public void Print() + { + Console.WriteLine($"id: {id}, \nfirstName: {firstName},\n" + + $"lastName: {lastName}, \nmiddleName: {middleName},\n" + + $"age: {age}, \ngroup: {group}"); + } + + public string GetFullName() + { + return $"{lastName} {firstName} {middleName}"; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/57_Lesson - Модификаторы доступа, public, protected, private.csproj b/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/57_Lesson - Модификаторы доступа, public, protected, private.csproj new file mode 100644 index 0000000..5eaab0e --- /dev/null +++ b/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/57_Lesson - Модификаторы доступа, public, protected, private.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {3378E01F-43A7-4F27-8944-2FF46C35C4F0} + Exe + Lesson_57___Модификаторы_доступа__public__protected__private + Lesson 57 - Модификаторы доступа, public, protected, private + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/App.config b/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/Program.cs b/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/Program.cs new file mode 100644 index 0000000..2fc55f6 --- /dev/null +++ b/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/Program.cs @@ -0,0 +1,57 @@ +using System; +using System.Reflection; + +/* + * модификаторы доступа public и private(используются для реализации инкапсуляции), для членов класса + */ +class Point +{ + /// + /// *по умолчанию private + /// + int z = 3; + + public int x = 1; + + private int y = 5; + + private void PrintX() + { + Console.WriteLine($"X: {x}"); + } + + public void PrintY() + { + Console.WriteLine($"Y: {y}"); + } + + public void PrintPoint() + { + PrintX(); + PrintY(); + } +} + +class Program +{ + static void Main() + { + Point point = new Point(); + + point.PrintY(); + point.x = 2; + point.PrintPoint(); + + // проверим то, что по умолчанию стоит private у поля используя рефлексию + var typeInfo = typeof(Point). + GetFields(BindingFlags.Instance + | BindingFlags.NonPublic + | BindingFlags.Public); + + foreach (var item in typeInfo) + { + Console.WriteLine($"{item.Name}\t isPrivate: {item.IsPrivate}\t isPublic: {item.IsPublic}"); + } + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0ca1ac1 --- /dev/null +++ b/LessonsAndTasks/Lesson 57 - Модификаторы доступа, public, protected, private/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 57 - Модификаторы доступа, public, protected, private")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 57 - Модификаторы доступа, public, protected, private")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("3378e01f-43a7-4f27-8944-2ff46c35c4f0")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/58_Lesson - ИНКАПСУЛЯЦИЯ, примеры.csproj b/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/58_Lesson - ИНКАПСУЛЯЦИЯ, примеры.csproj new file mode 100644 index 0000000..ad41257 --- /dev/null +++ b/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/58_Lesson - ИНКАПСУЛЯЦИЯ, примеры.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {2107BF8F-95A9-4A7A-9CB0-F676E59A887A} + Exe + Lesson_58___ИНКАПСУЛЯЦИЯ__примеры + Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/App.config b/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/Program.cs b/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/Program.cs new file mode 100644 index 0000000..4036a80 --- /dev/null +++ b/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/Program.cs @@ -0,0 +1,50 @@ +using System; + +/* + * Инкапсуляция + */ +class Gun +{ + /// + /// Cостояние + /// + private bool isLoaded; + + /// + /// Поведение + /// Инкапсуляция - скрываем состояние объекта - защищаем от внешнего мира + /// и даём возможность изменить состояние только с помощью этого же объекта + /// + /// Cпособ правильно организовать поведение(работу объекта через методы) + /// + private void Reload() + { + Console.WriteLine("Заряжаю..."); + + isLoaded = true; + + Console.WriteLine("Заряжено!"); + } + + public void Shot() + { + if (!isLoaded) + { + Console.WriteLine("Орудие не заряжено!"); + Reload(); + } + + Console.WriteLine("Пыщ - Пыщ!\n"); + isLoaded = false; + } +} + +class Program +{ + static void Main() + { + Gun gun = new Gun(); + gun.Shot(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c63d36c --- /dev/null +++ b/LessonsAndTasks/Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("2107bf8f-95a9-4a7a-9cb0-f676e59a887a")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/59_Lesson - Что такое конструктор класса, для чего, по умолчанию.csproj b/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/59_Lesson - Что такое конструктор класса, для чего, по умолчанию.csproj new file mode 100644 index 0000000..7284545 --- /dev/null +++ b/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/59_Lesson - Что такое конструктор класса, для чего, по умолчанию.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {90FB198E-A723-4127-B38F-6F3FE2180AED} + Exe + Lesson_59___Что_такое_конструктор_класса__для_чего__по_умолчанию + Lesson 59 - Что такое конструктор класса, для чего, по умолчанию + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/App.config b/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/Program.cs b/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/Program.cs new file mode 100644 index 0000000..4b6eb64 --- /dev/null +++ b/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/Program.cs @@ -0,0 +1,86 @@ +using System; + +/* + * конструктор класса - это специальный метод класса, который вызывается при создании объекта такого класса (new) + * + * конструктор по умолчанию + */ +class Point +{ + public Point(int x, int y) + { + _x = x; + _y = y; + } + + private int _x; + private int _y; + + public void Print() + { + Console.WriteLine($"X: {_x} \t Y: {_y}"); + } +} + +class Gun +{ + /// + /// конструктор без параметров + /// + /// ctor - конструктор по умолчанию + /// конструктор - тоже метод класса но только специальный, всегда public + /// можно выставить что сделать по умолчанию + /// + public Gun() + { + _isLoaded = true; + } + + /// + /// конструктор с параметрами + /// + /// # + public Gun(bool isLoaded) + { + this._isLoaded = isLoaded; + } + + private bool _isLoaded; + + /// + /// Поведение + /// + private void Reload() + { + Console.WriteLine("Заряжаю..."); + + _isLoaded = true; + + Console.WriteLine("Заряжено!"); + } + + public void Shot() + { + if (!_isLoaded) + { + Console.WriteLine("Орудие не заряжено!"); + Reload(); + } + + Console.WriteLine("Пыщ - Пыщ!\n"); + _isLoaded = false; + } +} + +class Program +{ + static void Main() + { + //new - конструктор по умолчанию (спец метод для создания объекта класса) + var gun = new Gun(isLoaded: true); + gun.Shot(); + Point point = new Point(1, 3); + point.Print(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..93a1f42 --- /dev/null +++ b/LessonsAndTasks/Lesson 59 - Что такое конструктор класса, для чего, по умолчанию/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 59 - Что такое конструктор класса, для чего, по умолчанию")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 59 - Что такое конструктор класса, для чего, по умолчанию")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("90fb198e-a723-4127-b38f-6f3fe2180aed")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse.sln b/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse.sln new file mode 100644 index 0000000..3265c38 --- /dev/null +++ b/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1738 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson 6 - Конвертация строки parse и tryparse", "Lesson 6 - Конвертация строки parse и tryparse\Lesson 6 - Конвертация строки parse и tryparse.csproj", "{473B7C29-AD6F-41A3-BBF5-7F0D1968BE42}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {473B7C29-AD6F-41A3-BBF5-7F0D1968BE42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {473B7C29-AD6F-41A3-BBF5-7F0D1968BE42}.Debug|Any CPU.Build.0 = Debug|Any CPU + {473B7C29-AD6F-41A3-BBF5-7F0D1968BE42}.Release|Any CPU.ActiveCfg = Release|Any CPU + {473B7C29-AD6F-41A3-BBF5-7F0D1968BE42}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6B9503BD-B4C0-4268-AED4-672D68BB6537} + EndGlobalSection +EndGlobal diff --git a/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/06_Lesson - Конвертация строки parse и tryparse.csproj b/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/06_Lesson - Конвертация строки parse и tryparse.csproj new file mode 100644 index 0000000..0cfacbd --- /dev/null +++ b/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/06_Lesson - Конвертация строки parse и tryparse.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {473B7C29-AD6F-41A3-BBF5-7F0D1968BE42} + Exe + Lesson_6___Конвертация_строки_parse_и_tryparse + Lesson 6 - Конвертация строки parse и tryparse + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/App.config b/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/Program.cs b/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/Program.cs new file mode 100644 index 0000000..2a238f8 --- /dev/null +++ b/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/Program.cs @@ -0,0 +1,45 @@ +using System; +using System.Globalization; + +/* + * конвертация строки + * parse и tryparse + */ +class Program +{ + static void Main() + { + string str = "5"; + string str1 = "5.2"; + int a = int.Parse(str); + NumberFormatInfo numberFormatInfo = new NumberFormatInfo + { + NumberDecimalSeparator = ".", + }; + double a1 = double.Parse(str1, numberFormatInfo); + + string teststr = "34.3oeskfso"; + try + { + int f = Convert.ToInt32(teststr); + int f1 = int.Parse(teststr); + Console.WriteLine($"Успешная конвертация: {f1}"); + } + catch(Exception) + { + Console.WriteLine($"Ошибка при конвертации: {teststr}"); + } + + string k = "2 авуыаыу ауыа"; + + int l; + + // TryParse - Возвращает булевый результат + // о том - распарсил он строку или нет + bool result = int.TryParse(k, out l); + // Out - данная переменная будет модифицирована внутри метода, + // инициализирована и возвращена наружу + Console.WriteLine(result ? $"Операция успешна, значение: {l}" : $"Не удалось конвертировать: {k}"); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..954ec3b --- /dev/null +++ b/LessonsAndTasks/Lesson 6 - Конвертация строки parse и tryparse/Lesson 6 - Конвертация строки parse и tryparse/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 6 - Конвертация строки parse и tryparse")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 6 - Конвертация строки parse и tryparse")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("473b7c29-ad6f-41a3-bbf5-7f0d1968be42")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/60_Lesson - Перегрузка конструкторов класса, что это.csproj b/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/60_Lesson - Перегрузка конструкторов класса, что это.csproj new file mode 100644 index 0000000..ad404b8 --- /dev/null +++ b/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/60_Lesson - Перегрузка конструкторов класса, что это.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {0A6CE006-5DFA-4478-8ADC-3CA0F16CACBA} + Exe + Lesson_60___Перегрузка_конструкторов_класса__что_это + Lesson 60 - Перегрузка конструкторов класса, что это + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/App.config b/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/Program.cs b/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/Program.cs new file mode 100644 index 0000000..32015d0 --- /dev/null +++ b/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/Program.cs @@ -0,0 +1,99 @@ +using System; + +/* + * Перегрузка конструкторов класса + */ +class Student +{ + public Student(string lastName, DateTime birthday) + { + _lastName = lastName; + _birthday = birthday; + } + + public Student(string lastName, string firstName, string middleName, DateTime birthday) + { + _lastName = lastName; + _firstName = firstName; + _middleName = middleName; + _birthday = birthday; + } + + public Student(Student student) + { + _firstName = student._firstName; + _lastName = student._lastName; + _middleName = student._middleName; + _birthday = student._birthday; + } + + private string _firstName; + private string _middleName; + private string _lastName; + private DateTime _birthday; + + public void SetLastName(string lastName) => _lastName = lastName; + + public void Print() + { + Console.WriteLine($"Имя: " + _firstName + + $"\nФамилия: " + _lastName + + $"\nОтчество: " + _middleName + + $"\nДата рождения: " + _birthday); + } +} + +class Point +{ + /// + /// наличие более одного конструктора и есть перегрузка + /// + public Point() => _x = _y = 1; + + public Point(int x, int y) + { + _x = x; + _y = y; + } + + private int _x; + private int _y; + + public void Print() + { + Console.WriteLine($"X: {_x} \t Y: {_y}"); + } +} + +class Program +{ + static void Main() + { + Point point = new Point(); + point.Print(); + + Student student_1 = new Student("lastName", DateTime.Now); + + //оба студента - это ссылки в управляемой куче (особенность класса) + //мы копируем ссылку студента 1 в обьект студента 2 + Student student_2 = student_1; + + //чтобы избежать копирования ссылки мы используем конструктор создания класса + //тем самым конструируем новый объект + Student student_3 = new Student(student_1); + + student_1.SetLastName("#####"); + student_3.SetLastName("***"); + + student_1.Print(); + + Console.WriteLine(); + + student_2.Print(); + + Console.WriteLine(); + + student_3.Print(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2279d14 --- /dev/null +++ b/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 60 - Перегрузка конструкторов класса, что это")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 60 - Перегрузка конструкторов класса, что это")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("0a6ce006-5dfa-4478-8adc-3ca0f16cacba")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/61_Lesson - Ключевое слово this, this в конструкторе.csproj b/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/61_Lesson - Ключевое слово this, this в конструкторе.csproj new file mode 100644 index 0000000..9e877de --- /dev/null +++ b/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/61_Lesson - Ключевое слово this, this в конструкторе.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {A450AABD-15BC-433E-B9B9-9D91BF5F4BFA} + Exe + Lesson_61___Ключевое_слово_this__this_в_конструкторе + Lesson 61 - Ключевое слово this, this в конструкторе + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/App.config b/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/Program.cs b/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/Program.cs new file mode 100644 index 0000000..80a3a04 --- /dev/null +++ b/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/Program.cs @@ -0,0 +1,53 @@ +using System; + +/// +/// - this - можно получить доступ к текущему экземпляру класса +/// - применяет когда есть не однозначность в именах переменных конструктора и полей класса +/// +class Student +{ + public Student(string lastName, DateTime birthday) + { + this.lastName = lastName; + this.birthday = birthday; + } + + public Student(string lastName, string firstName, string middleName, DateTime birthday) : this(lastName, birthday) + { + this.firstName = firstName; + this.middleName = middleName; + } + + public Student(Student student) + { + firstName = student.firstName; + lastName = student.lastName; + middleName = student.middleName; + birthday = student.birthday; + } + + private string firstName; + private string middleName; + private string lastName; + private DateTime birthday; + + public void SetLastName(string lastName) => this.lastName = lastName; + + public void Print() + { + Console.WriteLine($"Имя: " + firstName + + $"\nФамилия: " + lastName + + $"\nОтчество: " + middleName + + $"\nДата рождения: " + birthday); + } +} + +class Program +{ + static void Main() + { + Student student_1 = new Student("Qumo", new DateTime(2000, 10, 5)); + student_1.Print(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..b869133 --- /dev/null +++ b/LessonsAndTasks/Lesson 61 - Ключевое слово this, this в конструкторе/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 61 - Ключевое слово this, this в конструкторе")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 61 - Ключевое слово this, this в конструкторе")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("a450aabd-15bc-433e-b9b9-9d91bf5f4bfa")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/62_Lesson - Свойства get, set ключевое слово value, авто-свойства.csproj b/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/62_Lesson - Свойства get, set ключевое слово value, авто-свойства.csproj new file mode 100644 index 0000000..787ef6b --- /dev/null +++ b/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/62_Lesson - Свойства get, set ключевое слово value, авто-свойства.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {D32F4616-1733-4491-81C6-D77F975DF171} + Exe + Lesson_62___Свойства_get__set_ключевое_слово_value__авто_свойства + Lesson 62 - Свойства get, set ключевое слово value, авто-свойства + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/App.config b/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/Program.cs b/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/Program.cs new file mode 100644 index 0000000..ee304a0 --- /dev/null +++ b/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/Program.cs @@ -0,0 +1,24 @@ +using System; + +/* + * Сыойства (Properties) + * + * Автоматические свойства (prop) + */ +class Point +{ + private int x; + public void SetX(int x) => this.x = x; + public int GetX() => x; +} + +class Program +{ + static void Main() + { + Point point = new Point(); + point.SetX(5); + Console.WriteLine(point.GetX()); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7987eff --- /dev/null +++ b/LessonsAndTasks/Lesson 62 - Свойства get, set ключевое слово value, авто-свойства/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 62 - Свойства get, set ключевое слово value, авто-свойства")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 62 - Свойства get, set ключевое слово value, авто-свойства")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("d32f4616-1733-4491-81c6-d77f975df171")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/App.config b/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Lesson 62 - Свойства get, set, ключевое слово value.csproj b/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Lesson 62 - Свойства get, set, ключевое слово value.csproj new file mode 100644 index 0000000..b239344 --- /dev/null +++ b/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Lesson 62 - Свойства get, set, ключевое слово value.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {50B48D1C-0ED4-4937-A570-D4B491FE1AA8} + Exe + Lesson_62___Свойства_get__set__ключевое_слово_value + Lesson 62 - Свойства get, set, ключевое слово value + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Program.cs b/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Program.cs new file mode 100644 index 0000000..2f4e00e --- /dev/null +++ b/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Program.cs @@ -0,0 +1,89 @@ +using System; + +/* + * Свойства (Parametries) + * + * Автоматические свойства + */ + +namespace Lesson_62___Свойства_get__set__ключевое_слово_value +{ + class Point + { + private int x; + + public void SetX(int x) + { + //this.x = x; + if(x < 1) + { + this.x = 1; + return; + } + if(x > 5) + { + this.x = 5; + return; + } + + this.x = x; + } + + public int GetX() + { + return x; + } + + //propfull - сниппет + private int y; + + //get и set - это аксессоры (accessor) + public int Y + { + get + { + return y; + } + set //(тут работают public set private) + { + if(value < 1) + { + y = 1; + return; + } + if(value > 5) + { + y = 5; + return; + } + + y = value; + } + } + + private int z; + + public int Z + { + get { return z; } + set { z = value; } + } + + //автоматическое свойство - prop + public int Z_auto { get; set; } + } + + class Program + { + static void Main(string[] args) + { + Point point = new Point(); + point.SetX(21); + Console.WriteLine(point.GetX()); + point.Y = 10; + Console.WriteLine(point.Y); + point.Z_auto = 12; + Console.WriteLine(point.Z_auto); + } + } +} diff --git a/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4c084fa --- /dev/null +++ b/LessonsAndTasks/Lesson 62 - Свойства get, set, ключевое слово value/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 62 - Свойства get, set, ключевое слово value")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 62 - Свойства get, set, ключевое слово value")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("50b48d1c-0ed4-4937-a570-d4b491fe1aa8")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/63_Lesson - Статические поля класса, ключевое слово static.csproj b/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/63_Lesson - Статические поля класса, ключевое слово static.csproj new file mode 100644 index 0000000..ef4b564 --- /dev/null +++ b/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/63_Lesson - Статические поля класса, ключевое слово static.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {CAD89597-A781-491C-9B95-0C2D6DA3C70B} + Exe + Lesson_63___Статические_поля_класса__ключевое_слово_static + Lesson 63 - Статические поля класса, ключевое слово static + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/App.config b/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/ClassDiagram1.cd b/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/ClassDiagram1.cd new file mode 100644 index 0000000..7b89419 --- /dev/null +++ b/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/ClassDiagram1.cd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/Program.cs b/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/Program.cs new file mode 100644 index 0000000..5e80784 --- /dev/null +++ b/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/Program.cs @@ -0,0 +1,41 @@ +using System; + +/* + * Cлючевое слово static + * + * Статические поля класса (к полям, методам, свойствам, классам, конструкторам класса) + */ +class MyClass +{ + public int a; + + /// + /// static - память которая выделяется доступна для всех объектов myclass + /// общая для всех экземпляров класса + /// + public static int b; + + private static int g; + + public void SetG(int g) => MyClass.g = g; + + public void PrintG() => Console.WriteLine(g); +} + +class Program +{ + static void Main() + { + MyClass.b = 4; + + MyClass myClass1 = new MyClass(); + myClass1.a = 22; + + MyClass myClass2 = new MyClass(); + myClass2.a = 44; + + myClass1.SetG(1); + myClass2.PrintG(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..bb0ba20 --- /dev/null +++ b/LessonsAndTasks/Lesson 63 - Статические поля класса, ключевое слово static/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 63 - Статические поля класса, ключевое слово static")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 63 - Статические поля класса, ключевое слово static")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("cad89597-a781-491c-9b95-0c2d6da3c70b")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/64_Lesson - Статические методы, свойства, работа static.csproj b/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/64_Lesson - Статические методы, свойства, работа static.csproj new file mode 100644 index 0000000..23a76be --- /dev/null +++ b/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/64_Lesson - Статические методы, свойства, работа static.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {C203E2FB-EEB4-4496-9BC2-2951920CDD56} + Exe + Lesson_64___Статические_методы__свойства__работа_static + Lesson 64 - Статические методы, свойства, работа static + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/App.config b/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/Program.cs b/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/Program.cs new file mode 100644 index 0000000..fdeca41 --- /dev/null +++ b/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/Program.cs @@ -0,0 +1,81 @@ +using System; + +/* + * Ключесвое слово static + * + * Статические методы класса + * + * Статические свойства класса + */ +class Numb +{ + public Numb() => Counter++; + + private static int counter; + + public static int Counter + { + get { return counter; } + private set { counter = value; } + } + + public int ObjectsCount => counter; + + public static int GetCounter() => counter; + + public int GetObjectsCount() => counter; +} + +class MyClass_1 +{ + private static int a; + + private int b; + + public static void Foo() + { + Console.WriteLine("Вызван метод Foo()"); + a = 5; + Console.WriteLine(a); + } + + public void Bar() + { + Console.WriteLine("Вызван метод Bar()"); + Console.WriteLine(a); + Foo(); + } + + private static int c; + + public static int C + { + get { return c; } + set { c = value; } + } + + public static int D { get; set; } + +} + +class Program +{ + static void Main() + { + //Полиморфизм требует создание объекта класса и вызова метода на уровне экземпляра + MyClass_1 myClass = new MyClass_1(); + myClass.Bar(); + MyClass_1.Foo();// - статические методы недоступны на уровне экземпляра класса + MyClass_1.C = 3; + MyClass_1.D = 2; + + Numb numb = new Numb(); + Numb numb1 = new Numb(); + Numb numb2 = new Numb(); + Console.WriteLine(numb2.GetObjectsCount()); + Console.WriteLine(numb2.ObjectsCount); + Console.WriteLine(Numb.Counter); + Console.WriteLine(Numb.GetCounter()); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..45e9dc6 --- /dev/null +++ b/LessonsAndTasks/Lesson 64 - Статические методы, свойства, работа static/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 64 - Статические методы, свойства, работа static")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 64 - Статические методы, свойства, работа static")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("c203e2fb-eeb4-4496-9bc2-2951920cdd56")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/65_Lesson - Статический конструктор, как работает ключ. слово static.csproj b/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/65_Lesson - Статический конструктор, как работает ключ. слово static.csproj new file mode 100644 index 0000000..ee0b8c6 --- /dev/null +++ b/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/65_Lesson - Статический конструктор, как работает ключ. слово static.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {FDD50EA7-65F8-459D-9266-51E229757B78} + Exe + Lesson_65___Статический_конструктор__как_работает_ключ.слово_static + Lesson_65___Статический_конструктор__как_работает_ключ.слово_static + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/App.config b/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/Program.cs b/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/Program.cs new file mode 100644 index 0000000..1ddf4ad --- /dev/null +++ b/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/Program.cs @@ -0,0 +1,65 @@ +using System; + +/* + * Ключевое слово static + * + * Статический конструктор + */ + +class DbRepository +{ + private static string connectString; + + static DbRepository() //один раз срабатывает после старта программы + { + ConfigurationManager configurationManager = new ConfigurationManager(); + connectString = configurationManager.GetConnectionString(); + } + + public void GetData() => Console.WriteLine($"Использую: {connectString}"); +} + +class ConfigurationManager +{ + public string GetConnectionString() => "localDB"; +} + +class Terro +{ + public Terro() => Console.WriteLine("Конструктор"); + + public Terro(int a) => Console.WriteLine("Конструктор new a"); + + /// + /// Модификаторы доступа вообще не используются + /// Может быть только один статический конструктор в классе + /// Нельзя использовать перегрузку + /// Не может принимать параметров + /// Выполняется только один раз + /// + static Terro() => Console.WriteLine("Статический конструктор"); + + public static int g; + + public static void Foo() + { + Console.WriteLine("Foo"); + g = 2; + } +} + +class Program +{ + static void Main() + { + Terro.Foo(); + Terro terro = new Terro(); + new Terro(); + new Terro(); + new Terro(); + + var dbRepository = new DbRepository(); + dbRepository.GetData(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6087f7b --- /dev/null +++ b/LessonsAndTasks/Lesson 65 - Статический конструктор, как работает ключ. слово static/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 65 - Статический конструктор, как работает ключ. слово static")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 65 - Статический конструктор, как работает ключ. слово static")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("fdd50ea7-65f8-459d-9266-51e229757b78")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 66 - Статический класс/66_Lesson - Статический класс.csproj b/LessonsAndTasks/Lesson 66 - Статический класс/66_Lesson - Статический класс.csproj new file mode 100644 index 0000000..7bde47b --- /dev/null +++ b/LessonsAndTasks/Lesson 66 - Статический класс/66_Lesson - Статический класс.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {78912F30-35BD-411C-8CA9-49A2A3726745} + Exe + Lesson_66___Статический_класс + Lesson 66 - Статический класс + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 66 - Статический класс/App.config b/LessonsAndTasks/Lesson 66 - Статический класс/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 66 - Статический класс/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 66 - Статический класс/Program.cs b/LessonsAndTasks/Lesson 66 - Статический класс/Program.cs new file mode 100644 index 0000000..5a7681e --- /dev/null +++ b/LessonsAndTasks/Lesson 66 - Статический класс/Program.cs @@ -0,0 +1,20 @@ +using System; + +/* + * Ключевое слово static + * + * Статический класс + */ +static class Herro +{ + public static void Foo() => Console.WriteLine("Вызвал Foo()"); +} + +class Program +{ + static void Main() + { + Herro.Foo(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 66 - Статический класс/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 66 - Статический класс/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1eeec6e --- /dev/null +++ b/LessonsAndTasks/Lesson 66 - Статический класс/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 66 - Статический класс")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 66 - Статический класс")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("78912f30-35bd-411c-8ca9-49a2a3726745")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 67 - Методы расширения, extension/67_Lesson - Методы расширения, extension.csproj b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/67_Lesson - Методы расширения, extension.csproj new file mode 100644 index 0000000..3fa55e0 --- /dev/null +++ b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/67_Lesson - Методы расширения, extension.csproj @@ -0,0 +1,55 @@ + + + + + Debug + AnyCPU + {885DA3AA-3B3C-43EC-823D-A0B73D359B6A} + Exe + Lesson_67___Методы_расширения__extension + Lesson 67 - Методы расширения, extension + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 67 - Методы расширения, extension/App.config b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 67 - Методы расширения, extension/MyExtensions.cs b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/MyExtensions.cs new file mode 100644 index 0000000..42fef51 --- /dev/null +++ b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/MyExtensions.cs @@ -0,0 +1,23 @@ +using System; +using Students; + +namespace Extension +{ + static class MyExtensions + { + public static void Print(this DateTime dateTime) + { + Console.WriteLine($"{dateTime.Day} {dateTime.Month} {dateTime.Year}"); + } + + public static bool IsDayOfWeek(this DateTime dateTime, DayOfWeek dayOfWeek) + { + return dateTime.DayOfWeek == dayOfWeek; + } + + public static string GetFullName(this Student student) + { + return student.LastName + " " + student.FirstName; + } + } +} diff --git a/LessonsAndTasks/Lesson 67 - Методы расширения, extension/Program.cs b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/Program.cs new file mode 100644 index 0000000..0cb0de4 --- /dev/null +++ b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/Program.cs @@ -0,0 +1,19 @@ +using System; +using Extension; +using Students; + +/* + * Extension методы (метод расширения) (расширяющие методы) + */ +class Program +{ + static void Main() + { + DateTime currentDateTime = DateTime.Now; + currentDateTime.Print(); + Console.WriteLine(currentDateTime.IsDayOfWeek(DayOfWeek.Monday)); + Student student = new Student() { FirstName = "Джим", LastName = "Керри" }; + Console.WriteLine(student.GetFullName()); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 67 - Методы расширения, extension/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..5a0473b --- /dev/null +++ b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 67 - Методы расширения, extension")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 67 - Методы расширения, extension")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("885da3aa-3b3c-43ec-823d-a0b73d359b6a")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 67 - Методы расширения, extension/Student.cs b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/Student.cs new file mode 100644 index 0000000..6977202 --- /dev/null +++ b/LessonsAndTasks/Lesson 67 - Методы расширения, extension/Student.cs @@ -0,0 +1,11 @@ +namespace Students +{ + /// + /// Не можем унаследоваться от этого класса - sealed + /// + sealed class Student + { + public string FirstName { get; set; } + public string LastName { get; set; } + } +} diff --git a/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/68_Lesson - partial класс, частичные типы, partial методы.csproj b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/68_Lesson - partial класс, частичные типы, partial методы.csproj new file mode 100644 index 0000000..fe38f89 --- /dev/null +++ b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/68_Lesson - partial класс, частичные типы, partial методы.csproj @@ -0,0 +1,55 @@ + + + + + Debug + AnyCPU + {A3011C15-258D-4A62-B01B-91EFEEA9C936} + Exe + Lesson_68___partial_класс__частичные_типы__partial_методы + Lesson 68 - partial класс, частичные типы, partial методы + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/App.config b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Person.cs b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Person.cs new file mode 100644 index 0000000..9edfca2 --- /dev/null +++ b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Person.cs @@ -0,0 +1,11 @@ +partial class Person +{ + public string FirstName { get; set; } + public string LastName { get; set; } + + public Person(string firstName, string lastName) + { + FirstName = firstName; + LastName = lastName; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/PersonMethods.cs b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/PersonMethods.cs new file mode 100644 index 0000000..0e282e4 --- /dev/null +++ b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/PersonMethods.cs @@ -0,0 +1,12 @@ +partial class Person +{ + public string GetFullName() + { + return FirstName + " " + LastName; + } + + public void PrintFullName() // partial + { + System.Console.WriteLine(GetFullName()); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Program.cs b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Program.cs new file mode 100644 index 0000000..dba009a --- /dev/null +++ b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Program.cs @@ -0,0 +1,20 @@ +/* + * Частичные типы + * + * partial классы (паршиал) + * + * partial методы + */ +using System; +/// +/// Позволяет код класса произнести в разных файлах (класс превращается в частичный) +/// +class Program +{ + static void Main() + { + Person person = new Person("Джим", "Керри"); + person.PrintFullName(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a9a9a56 --- /dev/null +++ b/LessonsAndTasks/Lesson 68 - partial класс, частичные типы, partial методы/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 68 - partial класс, частичные типы, partial методы")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 68 - partial класс, частичные типы, partial методы")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("a3011c15-258d-4a62-b01b-91efeea9c936")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 69 - const vs readonly - разница между ними(const и static)/69_Lesson - const vs readonly - разница между ними(const и static).csproj b/LessonsAndTasks/Lesson 69 - const vs readonly - разница между ними(const и static)/69_Lesson - const vs readonly - разница между ними(const и static).csproj new file mode 100644 index 0000000..95e34f1 --- /dev/null +++ b/LessonsAndTasks/Lesson 69 - const vs readonly - разница между ними(const и static)/69_Lesson - const vs readonly - разница между ними(const и static).csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_69___const_vs_readonly___разница_между_ними_const_и_static__ + + + diff --git a/LessonsAndTasks/Lesson 69 - const vs readonly - разница между ними(const и static)/Program.cs b/LessonsAndTasks/Lesson 69 - const vs readonly - разница между ними(const и static)/Program.cs new file mode 100644 index 0000000..e0cbf3c --- /dev/null +++ b/LessonsAndTasks/Lesson 69 - const vs readonly - разница между ними(const и static)/Program.cs @@ -0,0 +1,122 @@ +using System; + +/* + * const и readonly + */ +class MyLogger +{ + public void Info(string message) + { + Console.WriteLine($"{DateTime.Now}\t|INFO|\t{message}"); + } + + public void Error(string message) + { + Console.WriteLine($"{DateTime.Now}\t|ERROR|\t{message}"); + } + + public void Warn(string message) + { + Console.WriteLine($"{DateTime.Now}\t|WARN|\t{message}"); + } +} + +class Car +{ + private const string ENGINE_IS_STARTED_MESSAGE = "Двигатель запущен!"; + private const string ATTEMPT_TO_START_ENGINE_MESSAGE = "Завожу двигатель!"; + private const string ENGINE_HAS_ALREADY_STARTED_MESSAGE = "Лапоть, двигатель уже запущен!"; + private const string ATTEMPT_TO_DRIVE_MESSAGE = "Тапку в пол!"; + private const string DRIVE_MESSAGE = "Поехали"; + private const string DRIVE_ERROR_MESSAGE = "Лапоть, сначала заведи двигатель"; + + /// + /// Это некий сервис который мы не будем менять + /// использует класс Car под свои нужды + /// + private readonly MyLogger _myLogger; + + private bool isEngineStarted; + + public Car(MyLogger myLogger) + { + _myLogger = myLogger; + } + + public void StartEngine() + { + _myLogger.Info(ATTEMPT_TO_START_ENGINE_MESSAGE); + if (isEngineStarted) + { + _myLogger.Warn(ENGINE_HAS_ALREADY_STARTED_MESSAGE); + } + else + { + isEngineStarted = true; + _myLogger.Info(ENGINE_IS_STARTED_MESSAGE); + } + } + + public void Drive() + { + _myLogger.Info(ATTEMPT_TO_DRIVE_MESSAGE); + if (isEngineStarted) + _myLogger.Info(DRIVE_MESSAGE); + else + _myLogger.Error(DRIVE_ERROR_MESSAGE); + } +} + +class ConstReadonly +{ + /// + /// const(не явно становится static) + /// всегда должны помещать туда данные + /// не изменяемое + /// удобно для хранения сообщения об ошибках + /// все константы - большими буквами + /// позволяет избежать эффекта -магических чисел- + /// + public const double PI = 3.14; + public const string MY_ERROR = "some error"; + + /// + /// readonly(НЕ static) + /// изменяется только в конструкторе + /// + public readonly int _g = 1; + /// + /// можно сделать явно статическим + /// можно использовать и менять только в статическом конструкторе + /// + public static readonly int _gg = 2; + + static ConstReadonly() => _gg = 43; + + public ConstReadonly(int g) => _g = g; + + public void Foo() + { + Console.WriteLine(PI); + Console.WriteLine(MY_ERROR); + Console.WriteLine(_g); + Console.WriteLine(_gg); + } +} + +class Program +{ + static void Main() + { + Console.WriteLine(ConstReadonly._gg); + Console.WriteLine(ConstReadonly.MY_ERROR); + Console.WriteLine(ConstReadonly.PI); + + Car car = new Car(new MyLogger()); + car.Drive(); + car.StartEngine(); + car.StartEngine(); + car.Drive(); + Console.ReadKey(); + } +} diff --git a/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль.sln b/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль.sln new file mode 100644 index 0000000..08257bb --- /dev/null +++ b/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1738 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson 7 - Что делать если закрывается консоль", "Lesson 7 - Что делать если закрывается консоль\Lesson 7 - Что делать если закрывается консоль.csproj", "{29C3ECAE-8577-4D90-9DED-7F15E6760865}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {29C3ECAE-8577-4D90-9DED-7F15E6760865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29C3ECAE-8577-4D90-9DED-7F15E6760865}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29C3ECAE-8577-4D90-9DED-7F15E6760865}.Release|Any CPU.ActiveCfg = Release|Any CPU + {29C3ECAE-8577-4D90-9DED-7F15E6760865}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {56FEEB6F-6459-487C-ABF5-6B2ABC0BD0D6} + EndGlobalSection +EndGlobal diff --git a/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/07_Lesson - Что делать если закрывается консоль.csproj b/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/07_Lesson - Что делать если закрывается консоль.csproj new file mode 100644 index 0000000..3b1d0b7 --- /dev/null +++ b/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/07_Lesson - Что делать если закрывается консоль.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {29C3ECAE-8577-4D90-9DED-7F15E6760865} + Exe + Lesson_7___Что_делать_если_закрывается_консоль + Lesson 7 - Что делать если закрывается консоль + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/App.config b/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/Program.cs b/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/Program.cs new file mode 100644 index 0000000..97b2203 --- /dev/null +++ b/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/Program.cs @@ -0,0 +1,13 @@ +using System; + +/* + * Что делать если закрывается консоль? + */ +class Program +{ + static void Main() + { + Console.WriteLine("Консоль закрывается! =)"); + Console.ReadLine(); // Console.Read() || Console.ReadKey() + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..96b6ed3 --- /dev/null +++ b/LessonsAndTasks/Lesson 7 - Что делать если закрывается консоль/Lesson 7 - Что делать если закрывается консоль/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 7 - Что делать если закрывается консоль")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 7 - Что делать если закрывается консоль")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("29c3ecae-8577-4d90-9ded-7f15e6760865")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/70_Lesson - синтаксис инициализации объектов класса.csproj b/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/70_Lesson - синтаксис инициализации объектов класса.csproj new file mode 100644 index 0000000..daa1229 --- /dev/null +++ b/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/70_Lesson - синтаксис инициализации объектов класса.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_70___синтаксис_инициализации_объектов_класса_ + + + diff --git a/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Address.cs b/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Address.cs new file mode 100644 index 0000000..0a0a72b --- /dev/null +++ b/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Address.cs @@ -0,0 +1,6 @@ +class Address +{ + public string Country { get; set; } + public string Region { get; set; } + public string City { get; set; } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Person.cs b/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Person.cs new file mode 100644 index 0000000..1d08755 --- /dev/null +++ b/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Person.cs @@ -0,0 +1,10 @@ +class Person +{ + public string FirstName { get; set; } + public string LastName { get; set; } + public Address Address { get; set; } + public override string ToString() + { + return $"FirstName: {FirstName}, LastName: {LastName} "; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Program.cs b/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Program.cs new file mode 100644 index 0000000..d55e80a --- /dev/null +++ b/LessonsAndTasks/Lesson 70 - синтаксис инициализации объектов класса/Program.cs @@ -0,0 +1,59 @@ +using System; + +/* + * синтаксиси инициализации объектов - процесс создания экземпляра объекта класса + */ +class Cat +{ + public int Age { get; set; } + public string Name { get; set; } + + public Cat() { } + + public Cat(string name) => Name = name; +} + +class Program +{ + static void Main() + { + Cat cat_1 = new Cat("Барсик"); + Console.WriteLine(cat_1.Name); + Cat cat_2 = new Cat(); + cat_2.Name = "Барс"; + cat_2.Age = 3; + var cat_3 = new Cat // альтернативная инициализация объекта + { + Name = "Жмур", + Age = 4 + }; + // Для понимания зачем использовать альтернативную инициализацию + var person1 = new Person(); + person1.FirstName = "Ранд"; + person1.LastName = "ал'Тор"; + + var address = new Address(); + address.Country = "Andor"; + address.Region = "Dvurech"; + address.City = "Lug"; + + person1.Address = address; + + // Выше читаемость кода + var person2 = new Person + { + FirstName = "Ранд", + LastName = "ал'Тор", + Address = new Address + { + City = "Lug", + Region = "Dvurech", + Country = "Andor" + } + }; + + Console.WriteLine(person1.ToString()); + Console.WriteLine(person2.ToString()); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/71_Lesson - НАСЛЕДОВАНИЕ.csproj b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/71_Lesson - НАСЛЕДОВАНИЕ.csproj new file mode 100644 index 0000000..86b9d78 --- /dev/null +++ b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/71_Lesson - НАСЛЕДОВАНИЕ.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_71___НАСЛЕДОВАНИЕ_ + + + diff --git a/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/ClassDiagram1.cd b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/ClassDiagram1.cd new file mode 100644 index 0000000..172c71c --- /dev/null +++ b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/ClassDiagram1.cd @@ -0,0 +1,39 @@ + + + + + + AAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Empoloyee.cs + + + + + + AAAAAEAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAg= + LP.cs + + + + + + AAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Security.cs + + + + + + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAA= + Student.cs + + + + + + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAA= + Teacher.cs + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Empoloyee.cs b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Empoloyee.cs new file mode 100644 index 0000000..9c9687b --- /dev/null +++ b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Empoloyee.cs @@ -0,0 +1,4 @@ +class Empoloyee : LP +{ + public decimal Salary { get; set; } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/LP.cs b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/LP.cs new file mode 100644 index 0000000..2229915 --- /dev/null +++ b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/LP.cs @@ -0,0 +1,12 @@ +using System; + +class LP +{ + public string FirstName { get; set; } + public string LastName { get; set; } + + public void PrintFullName() + { + Console.WriteLine($"Name: {FirstName}, LastName: {LastName}"); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Program.cs b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Program.cs new file mode 100644 index 0000000..0031950 --- /dev/null +++ b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Program.cs @@ -0,0 +1,82 @@ +using System; + +class Kraft +{ + public string FirstName { get; set; } + public string LastName { get; set; } + + public void PrintName() => Console.WriteLine($"Name: {FirstName}"); +} + +/// +/// Выполнено наследование +/// все свойства, методы и поля унаследованы +/// +class Ivuc : Kraft +{ + public void PrintLastName() => Console.WriteLine($"LastName: {LastName}"); +} + +/// +/// наследование в Объектно-ориентированном программировании (ООП) +/// позволяет избежать ненужного дублирования кода +/// позволяет реализовать полиморфизм +/// множественного наследования в C# нет (для классов) +/// +class Program +{ + static void Main() + { + var kraft = new Kraft + { + FirstName = "terry", + LastName = "lamos" + }; + kraft.PrintName(); + + var ivuc = new Ivuc + { + FirstName = "terry", + LastName = "lamos" + }; + + ivuc.PrintName(); + ivuc.PrintLastName(); + + // Можно при инициализацими экземпляра класса, инициализировать его наследника + // Тем самым, это помогает в работе старого функционала - он может работать и с наследниками + var kraft_ivuc = new Ivuc + { + FirstName = "terry", + LastName = "lamos" + }; + PrintFullName(kraft_ivuc); + + var teacher = new Teacher + { + FirstName = "John", + LastName = "Karter" + }; + + var student = new Student + { + FirstName = "Garry", + LastName = "Astos" + }; + + LP[] people = { teacher, student }; + PrintLP(people); + Console.ReadKey(); + } + + static void PrintFullName(Kraft kraft) + { + Console.WriteLine($"Name: {kraft.FirstName} LastName: {kraft.LastName}"); + } + + static void PrintLP(LP[] persons) + { + foreach (var person in persons) + person.PrintFullName(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Security.cs b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Security.cs new file mode 100644 index 0000000..5ce9a8e --- /dev/null +++ b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Security.cs @@ -0,0 +1,6 @@ +using System; + +class Security : Empoloyee +{ + public void Guard() => Console.WriteLine("I'am guarding"); +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Student.cs b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Student.cs new file mode 100644 index 0000000..06602df --- /dev/null +++ b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Student.cs @@ -0,0 +1,6 @@ +using System; + +class Student : LP +{ + public void Learn() => Console.WriteLine("I'm learning"); +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Teacher.cs b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Teacher.cs new file mode 100644 index 0000000..1ac9049 --- /dev/null +++ b/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Teacher.cs @@ -0,0 +1,6 @@ +using System; + +class Teacher : Empoloyee +{ + public void Teach() => Console.WriteLine("I'am teaching"); +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 72 - Ключевое слово base, наследование и конструктор класса/72_Lesson - Ключевое слово base, наследование и конструктор класса.csproj b/LessonsAndTasks/Lesson 72 - Ключевое слово base, наследование и конструктор класса/72_Lesson - Ключевое слово base, наследование и конструктор класса.csproj new file mode 100644 index 0000000..9ebb00c --- /dev/null +++ b/LessonsAndTasks/Lesson 72 - Ключевое слово base, наследование и конструктор класса/72_Lesson - Ключевое слово base, наследование и конструктор класса.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_72___Ключевое_слово_base__наследование_и_конструктор_класса_ + + + diff --git a/LessonsAndTasks/Lesson 72 - Ключевое слово base, наследование и конструктор класса/Program.cs b/LessonsAndTasks/Lesson 72 - Ключевое слово base, наследование и конструктор класса/Program.cs new file mode 100644 index 0000000..d86cb02 --- /dev/null +++ b/LessonsAndTasks/Lesson 72 - Ключевое слово base, наследование и конструктор класса/Program.cs @@ -0,0 +1,59 @@ +using System; + +/* + * наследование, конструкторы класса и ключевое слово base + */ +class Point2D +{ + public Point2D(int x, int y) + { + X = x; + Y = y; + Console.WriteLine("Point2D"); + } + + public int X { get; set; } + public int Y { get; set; } + + public void Print() + { + Console.WriteLine($"X:\t{X}"); + Console.WriteLine($"Y:\t{Y}"); + } +} + +class Point3D : Point2D +{ + /// + /// base - позволяет нам явно указать что мы хотим использовать (нечто) из базового класса + /// при использовании ключевого слова base мы можем явно указать какой конструктор у базоваого класса используем + /// + /// # + /// # + /// # + public Point3D(int x, int y, int z) : base(x, y) + { + Z = z; + Console.WriteLine("Point3D"); + } + public int Z { get; set; } + + public new void Print() + { + base.Print(); // аналог слова this (решающее неоднозначность) + Console.WriteLine($"Z:\t{Z}"); + } +} + +class Program +{ + static void Main() + { + //прежде чем создается класс конструктором - создаются все его предки + var point3D = new Point3D(1, 2, 3); + point3D.Print(); + var point2D = new Point2D(1, 2); + point2D.Print(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 73 - Операторы as is, наследование и приведение типов/73_Lesson - Операторы as is, наследование и приведение типов.csproj b/LessonsAndTasks/Lesson 73 - Операторы as is, наследование и приведение типов/73_Lesson - Операторы as is, наследование и приведение типов.csproj new file mode 100644 index 0000000..427e05a --- /dev/null +++ b/LessonsAndTasks/Lesson 73 - Операторы as is, наследование и приведение типов/73_Lesson - Операторы as is, наследование и приведение типов.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_73___Операторы_as_is__наследование_и_приведение_типов_ + + + diff --git a/LessonsAndTasks/Lesson 73 - Операторы as is, наследование и приведение типов/Program.cs b/LessonsAndTasks/Lesson 73 - Операторы as is, наследование и приведение типов/Program.cs new file mode 100644 index 0000000..9f93160 --- /dev/null +++ b/LessonsAndTasks/Lesson 73 - Операторы as is, наследование и приведение типов/Program.cs @@ -0,0 +1,55 @@ +using System; + +/* + * приведение типов и наследование + * + * использование операторов as и is + */ +class BasePoint +{ + // +} + +/// +/// *Все типы данных неявно унаследованы от типа Object +/// +class Point : BasePoint +{ + public int X { get; set; } + public int Y { get; set; } + + public void Print() + { + Console.WriteLine($"X:\t{X}"); + Console.WriteLine($"Y:\t{Y}"); + } +} + +class Program +{ + static void Main() + { + // ссылка базового класса может хранить любой тип наследников + object obj = new Point { X = 5, Y = 2 }; + + var point = (Point)obj; // приведение object к Point + point.Print(); + + Foo(obj); + Bar(obj); + Console.ReadKey(); + } + + static void Foo(object obj) + { + var point = obj as Point; // as - проверяет исключение при приведении типов + point?.Print(); + } + + static void Bar(object obj) + { + // is - позволяет сразу поместить данные в объект если прошел проверку + if (obj is Point point) + point.Print(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 74 - protected - модификатор доступа/74_Lesson - protected - модификатор доступа.csproj b/LessonsAndTasks/Lesson 74 - protected - модификатор доступа/74_Lesson - protected - модификатор доступа.csproj new file mode 100644 index 0000000..0c76aee --- /dev/null +++ b/LessonsAndTasks/Lesson 74 - protected - модификатор доступа/74_Lesson - protected - модификатор доступа.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_74___protected___модификатор_доступа_ + + + diff --git a/LessonsAndTasks/Lesson 74 - protected - модификатор доступа/Program.cs b/LessonsAndTasks/Lesson 74 - protected - модификатор доступа/Program.cs new file mode 100644 index 0000000..21c3115 --- /dev/null +++ b/LessonsAndTasks/Lesson 74 - protected - модификатор доступа/Program.cs @@ -0,0 +1,69 @@ +using System; + +/* + * модификатор доступа protected при наследовании + */ +class Program +{ + public class A + { + public A() + { + Console.WriteLine("A"); + Console.WriteLine(publicField); // поле доступно + Console.WriteLine(protectedField); // поле доступно + Console.WriteLine(privateField); // поле доступно + } + + public void Bar() + { + Console.WriteLine("Bar"); + Console.WriteLine(publicField); // поле доступно + Console.WriteLine(protectedField); // поле доступно + Console.WriteLine(privateField); // поле доступно + } + + public int publicField = 4; + private int privateField = 5; + /// + /// protected - работает со всем одинаково(свойства, поля, методы) + /// protected - внутри класса доступны, снаружи класса не доступны (разница в наследовании) + /// + protected int protectedField = 6; + private protected int privateprotectedField = 7; + + protected void Foo() { } + protected int MyProperty { get; set; } + } + + class B : A + { + public B() + { + Console.WriteLine("B"); + Console.WriteLine(publicField); // поле доступно + // Console.WriteLine(privateField); // поле не доступно в наследнике + Console.WriteLine(protectedField); // поле доступно в наследнике, но не доступно за пределами класса(или его наследников) + Bar(); + } + + public void Cas() + { + Bar(); + } + } + + static void Main() + { + A a = new A(); + Console.WriteLine(a.publicField); // поле доступно + //System.Console.WriteLine(a.protectedField)// поле не доступно из-за уровня защиты + //System.Console.WriteLine(a.privateField) // поле не доступно из-за уровня защиты + B b = new B(); + Console.WriteLine(b.publicField); // поле доступно + //System.Console.WriteLine(b.protectedField)// поле не доступно из-за уровня защиты + //System.Console.WriteLine(b.privateField) // поле не доступно из-за уровня защиты + b.Bar(); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 75 - ПОЛИМОРФИЗМ, виртуальные методы, virtual override/75_Lesson - ПОЛИМОРФИЗМ, виртуальные методы, virtual override.csproj b/LessonsAndTasks/Lesson 75 - ПОЛИМОРФИЗМ, виртуальные методы, virtual override/75_Lesson - ПОЛИМОРФИЗМ, виртуальные методы, virtual override.csproj new file mode 100644 index 0000000..f659191 --- /dev/null +++ b/LessonsAndTasks/Lesson 75 - ПОЛИМОРФИЗМ, виртуальные методы, virtual override/75_Lesson - ПОЛИМОРФИЗМ, виртуальные методы, virtual override.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_75___ПОЛИМОРФИЗМ__виртуальные_методы__virtual_override_ + + + diff --git a/LessonsAndTasks/Lesson 75 - ПОЛИМОРФИЗМ, виртуальные методы, virtual override/Program.cs b/LessonsAndTasks/Lesson 75 - ПОЛИМОРФИЗМ, виртуальные методы, virtual override/Program.cs new file mode 100644 index 0000000..d0bcaba --- /dev/null +++ b/LessonsAndTasks/Lesson 75 - ПОЛИМОРФИЗМ, виртуальные методы, virtual override/Program.cs @@ -0,0 +1,60 @@ +using System; + +/* + * Полиморфизм + * + * виртуальные методы + * + * virtual + * + * override + */ +/// +/// virtual и override - дают возможность переопределить работу методов в классе наследнике +/// +class Motor +{ + /// + /// Чтобы метод был доступен на уровно наследника вместо private ставим protected + /// + protected virtual void StartEngine() + => Console.WriteLine("Двигатель запущен!"); + + /// + /// Чтобы переопределить метод для новой реализации в наследнике + /// + public virtual void Drive() + { + StartEngine(); + Console.WriteLine("Я еду!"); + } +} + +class SportMotor : Motor +{ + protected override void StartEngine() => Console.WriteLine("Рон дон дон"); + + /// + /// Переопределение виртуального метода + /// + public override void Drive() + { + StartEngine(); + Console.WriteLine("Я быстро еду!"); + } +} + +class Stable +{ + public void Drive(Motor motor) => motor.Drive(); +} + +class Program +{ + static void Main() + { + var stable = new Stable(); + stable.Drive(new SportMotor()); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 76 - Абстрактные классы, abstract/76_Lesson - Абстрактные классы, abstract.csproj b/LessonsAndTasks/Lesson 76 - Абстрактные классы, abstract/76_Lesson - Абстрактные классы, abstract.csproj new file mode 100644 index 0000000..71b9488 --- /dev/null +++ b/LessonsAndTasks/Lesson 76 - Абстрактные классы, abstract/76_Lesson - Абстрактные классы, abstract.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_76___Абстрактные_классы__abstract_ + + + diff --git a/LessonsAndTasks/Lesson 76 - Абстрактные классы, abstract/Program.cs b/LessonsAndTasks/Lesson 76 - Абстрактные классы, abstract/Program.cs new file mode 100644 index 0000000..1d8c52f --- /dev/null +++ b/LessonsAndTasks/Lesson 76 - Абстрактные классы, abstract/Program.cs @@ -0,0 +1,108 @@ +using System; +/* + * полиморфизм + * + * абстрактный класс + * + * абстрактный метод + * + * абстрактное свойство + */ +/// +/// Абстрактный класс - это некая идея, которая может содержать в себе частичную реализацию +/// и содержание которого можно использовать в наследниках +/// +/// Из урока 77 делаем интерфейс ShowInfo +/// +interface IHasInfo +{ + void ShowInfo(); +} + +interface IWeapon +{ + int Damage { get; } + void Fire(); +} + +/// +/// Cмысл абстрактного класса в том, что поведение одно единое для всех реализует интерфейс +/// а отдельные отличия поведения разного рода объектов реализует абстрактный класс +/// +/// Хотим научить наш класс Player стрелять из любого вида оружия +/// +abstract class Weapon : IHasInfo, IWeapon +{ + public abstract int Damage { get; } + /// + /// Поведение + /// + public abstract void Fire(); + /// + /// Не только абстрактный метод но и реализация возможна + /// + public void ShowInfo() => Console.WriteLine($"{GetType().Name}: {Damage}"); +} + +/// +/// При наследовании от абстрактного класса - мы обязаны реализовать все его абстрактные методы +/// +class Gun : Weapon +{ + public override int Damage { get { return 5; } } + + public override void Fire() + => Console.WriteLine("Boom"); +} + +/// +/// При наследовании от абстрактного класса - мы обязаны реализовать все его абстрактные методы +/// +class LazerGun : Weapon +{ + public override int Damage => 9; + + public override void Fire() + => Console.WriteLine("Boom's"); +} + +/// +/// При наследовании от абстрактного класса - мы обязаны реализовать все его абстрактные методы +/// +class Bow : Weapon +{ + public override int Damage => 12; + + public override void Fire() + => Console.WriteLine("Bzzzzzzzz"); +} + +class Box : IHasInfo +{ + public void ShowInfo() => Console.WriteLine("Я ЯЩИК!"); +} + +class Player +{ + public void Fire(IWeapon weapon) => weapon.Fire(); + public void CheckInfo(Weapon weapon) => weapon.ShowInfo(); + public void CheckInterfaceInfo(IHasInfo hasInfo) => hasInfo.ShowInfo(); +} + +class Program +{ + static void Main() + { + var player = new Player(); + Weapon[] inventory = { new Gun(), new LazerGun(), new Bow() }; + foreach (var item in inventory) + { + player.CheckInfo(item); + player.CheckInterfaceInfo(item); + player.Fire(item); + Console.WriteLine(); + } + player.CheckInterfaceInfo(new Box()); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 77 - Интерфейсы, зачем нужны и как используются, interface/77_Lesson - Интерфейсы, зачем нужны и как используются, interface.csproj b/LessonsAndTasks/Lesson 77 - Интерфейсы, зачем нужны и как используются, interface/77_Lesson - Интерфейсы, зачем нужны и как используются, interface.csproj new file mode 100644 index 0000000..250b546 --- /dev/null +++ b/LessonsAndTasks/Lesson 77 - Интерфейсы, зачем нужны и как используются, interface/77_Lesson - Интерфейсы, зачем нужны и как используются, interface.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_77___Интерфейсы__зачем_нужны_и_как_используются__interface_ + + + diff --git a/LessonsAndTasks/Lesson 77 - Интерфейсы, зачем нужны и как используются, interface/Program.cs b/LessonsAndTasks/Lesson 77 - Интерфейсы, зачем нужны и как используются, interface/Program.cs new file mode 100644 index 0000000..b5fca47 --- /dev/null +++ b/LessonsAndTasks/Lesson 77 - Интерфейсы, зачем нужны и как используются, interface/Program.cs @@ -0,0 +1,64 @@ +using System; + +/* + * интерфейсы и полиморфизм + */ +/// +/// *принято что каждый класс и каждый интерфейс находится в своем отдельном файле +/// Интерфейсы - как конструкция языка программирования C# +/// мы определяем поведение которое в последствии будет реализовано в конкретном классе +/// важное отличие интерфейса от абстракции в том что оно позволяет множественное наследование +/// То есть один класс может наследовать несколько интерфейсов (класс не наследуется от интерфейса, а реализует его +/// +/// нет конструкторов +/// нет полей класса +/// только поведение(методы и свойства) и контракт +/// все по умолчанию имеют модификатор public +/// +interface IDataProvider +{ + string GetData(); +} + +interface IDataProcessor +{ + void ProcessData(IDataProvider dataProvider); +} + +/// +/// Также должны реализовать все компоненты интерфейса +/// +class ConsoleDataProcessor : IDataProcessor +{ + public void ProcessData(IDataProvider dataProvider) + => Console.WriteLine(dataProvider.GetData()); +} + +class DbDataProvider : IDataProvider +{ + public string GetData() => "Данные из БД"; +} + +class FileDataProvider : IDataProvider +{ + public string GetData() => "Данные из файла"; +} + +class APIDataProvider : IDataProvider +{ + public string GetData() => "Данные с HTTP"; +} + +class Program +{ + static void Main() + { + // ссылка на интерфейс может хранить объект класса который его реализует + IDataProcessor dataProcessor = new ConsoleDataProcessor(); + // полиморфизм в чистом виде + dataProcessor.ProcessData(new DbDataProvider()); + dataProcessor.ProcessData(new FileDataProvider()); + dataProcessor.ProcessData(new APIDataProvider()); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 78 - Наследование интерфейсов, множественное наследование/78_Lesson - Наследование интерфейсов, множественное наследование.csproj b/LessonsAndTasks/Lesson 78 - Наследование интерфейсов, множественное наследование/78_Lesson - Наследование интерфейсов, множественное наследование.csproj new file mode 100644 index 0000000..b24498d --- /dev/null +++ b/LessonsAndTasks/Lesson 78 - Наследование интерфейсов, множественное наследование/78_Lesson - Наследование интерфейсов, множественное наследование.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_78___Наследование_интерфейсов__множественное_наследование_ + + + diff --git a/LessonsAndTasks/Lesson 78 - Наследование интерфейсов, множественное наследование/Program.cs b/LessonsAndTasks/Lesson 78 - Наследование интерфейсов, множественное наследование/Program.cs new file mode 100644 index 0000000..0769ae5 --- /dev/null +++ b/LessonsAndTasks/Lesson 78 - Наследование интерфейсов, множественное наследование/Program.cs @@ -0,0 +1,82 @@ +using System; + +/* + * наследование интерфейсов + */ +interface IWeapon +{ + void Fire(); +} + +/// +/// Метательное оружие +/// +interface IThrowingWeapon : IWeapon +{ + void Throw(); +} + +/// +/// Принцип такой-же как у классов (все что есть в базовом доступно и в наследнике) +/// +interface ISmall : IWeapon { } + +/// +/// В отличии от классов поддерживают множественное наследование +/// +interface IBig : IWeapon, ISmall { } + +class Gun : IWeapon +{ + public void Fire() + => Console.WriteLine($"{GetType().Name}: GunBom"); +} + +class LazerGun : IWeapon +{ + public void Fire() + => Console.WriteLine($"{GetType().Name}: LazerGunBom"); +} + +class Bow : IWeapon// - это НЕ наследование, а реализация интерфейсов +{ + public void Fire() + => Console.WriteLine($"{GetType().Name}: BowBom"); +} + +/// +/// Реализуем нож +/// +class Knife : IThrowingWeapon +{ + public void Fire() + => Console.WriteLine($"{GetType().Name}: KnifeBom"); + + public void Throw() + => Console.WriteLine($"{GetType().Name}: KnifeThrow"); +} + +class Player +{ + public void Fire(IWeapon weapon) => weapon.Fire(); + + public void Throw(IThrowingWeapon throwingWeapon) + => throwingWeapon.Throw(); +} + +class Program +{ + static void Main() + { + ISmall small; + var player = new Player(); + IWeapon[] inventory = { new Gun(), new LazerGun(), new Knife() }; + foreach (var item in inventory) + { + player.Fire(item); + Console.WriteLine(); + } + player.Throw(new Knife()); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 79 - Интерфейсы - Явная реализация/79_Lesson - Интерфейсы - Явная реализация.csproj b/LessonsAndTasks/Lesson 79 - Интерфейсы - Явная реализация/79_Lesson - Интерфейсы - Явная реализация.csproj new file mode 100644 index 0000000..7f8a4e8 --- /dev/null +++ b/LessonsAndTasks/Lesson 79 - Интерфейсы - Явная реализация/79_Lesson - Интерфейсы - Явная реализация.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_79___Интерфейсы___Явная_реализация_ + + + diff --git a/LessonsAndTasks/Lesson 79 - Интерфейсы - Явная реализация/Program.cs b/LessonsAndTasks/Lesson 79 - Интерфейсы - Явная реализация/Program.cs new file mode 100644 index 0000000..64d1489 --- /dev/null +++ b/LessonsAndTasks/Lesson 79 - Интерфейсы - Явная реализация/Program.cs @@ -0,0 +1,74 @@ +using System; +/* + * явная реализация интерфейсов + */ +/// +/// *класс может реализовать интерфейсы с одинаковыми методами +/// *если нам нужна разная реализация для этих методов, то интерфейсы нужно реализовать явно +/// +interface IFirstInterface +{ + void Action(); +} + +interface ISecondInterface +{ + void Action(); +} + +class Actions : IFirstInterface, ISecondInterface +{ + public void Action() + => Console.WriteLine($"{GetType().Name}: Action"); +} + +/// +/// Для таких случаев нужно использовать явную реализацию интерфейсов +/// +class OtherAction : IFirstInterface, ISecondInterface +{ + /// + /// Модификаторы ставить нельзя из-за неоднозначности и отсутствия ссылки на интерфейс + /// + void IFirstInterface.Action() + { + Console.WriteLine($"IFirstInterface Action"); + } + + void ISecondInterface.Action() + { + Console.WriteLine($"ISecondInterface Action"); + } +} + +class Program +{ + static void Main() + { + var act = new Actions(); + + Action_1(act); + Action_2(act); + + var otherAction = new OtherAction(); + + Action_1(otherAction); + Action_2(otherAction); + + ((IFirstInterface)otherAction).Action(); + ((ISecondInterface)otherAction).Action(); + + // более безопасный с операторами as или is + if (otherAction is IFirstInterface firstInterface) + firstInterface.Action(); + if (otherAction is ISecondInterface secondInterface) + secondInterface.Action(); + Console.ReadKey(); + } + + public static void Action_1(IFirstInterface firstInterface) + => firstInterface.Action(); + + public static void Action_2(ISecondInterface secondInterface) + => secondInterface.Action(); +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами.sln b/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами.sln new file mode 100644 index 0000000..b646857 --- /dev/null +++ b/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1738 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson 8 - Арифметические операции с числами", "Lesson 8 - Арифметические операции с числами\Lesson 8 - Арифметические операции с числами.csproj", "{2543A1D0-1B38-4E19-96E4-77E635CD768F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2543A1D0-1B38-4E19-96E4-77E635CD768F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2543A1D0-1B38-4E19-96E4-77E635CD768F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2543A1D0-1B38-4E19-96E4-77E635CD768F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2543A1D0-1B38-4E19-96E4-77E635CD768F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C81396E8-F9BC-4F27-A22D-C9C9EF720A69} + EndGlobalSection +EndGlobal diff --git a/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/08_Lesson - Арифметические операции с числами.csproj b/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/08_Lesson - Арифметические операции с числами.csproj new file mode 100644 index 0000000..f778871 --- /dev/null +++ b/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/08_Lesson - Арифметические операции с числами.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {2543A1D0-1B38-4E19-96E4-77E635CD768F} + Exe + Lesson_8___Арифметические_операции_с_числами + Lesson 8 - Арифметические операции с числами + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/App.config b/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/Program.cs b/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/Program.cs new file mode 100644 index 0000000..ad51540 --- /dev/null +++ b/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/Program.cs @@ -0,0 +1,35 @@ +using System; + +/* + * ОПЕРАТОРЫ + * + * Арифметические операции с числами + * + * 1. Напишите программу, вычисляющую среднее арифметическое двух чисел + * + * 2. Введите три числа и выведите на экран значение суммы и произведения этих чисел + * + * 3. Напишите простой конвертер валют (без возможности динамического выбора валюты + * пользователем). Валюты заданы хардкодом и не изменяются. Тип валют на выбор программиста + */ +class Program +{ + static void Main() + { + int result, a = 4, b = 5; + + result = a + b; + Console.WriteLine($"Сумма: {result}"); + result = a - b; + Console.WriteLine($"Разность: {result}"); + result = a * b; + Console.WriteLine($"Произведение: {result}"); + result = a / b; + Console.WriteLine($"Деление: {result}"); + result = a % b; + Console.WriteLine($"Деление с остатком: {result}"); + double result_d = (double) a / b; + Console.WriteLine($"Деление с конвертацией с приведением к формату double: {result_d}"); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7363cb8 --- /dev/null +++ b/LessonsAndTasks/Lesson 8 - Арифметические операции с числами/Lesson 8 - Арифметические операции с числами/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 8 - Арифметические операции с числами")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 8 - Арифметические операции с числами")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("2543a1d0-1b38-4e19-96e4-77e635cd768f")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/80_Lesson - Реализация интерфейса по умолчанию.csproj b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/80_Lesson - Реализация интерфейса по умолчанию.csproj new file mode 100644 index 0000000..9bb6381 --- /dev/null +++ b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/80_Lesson - Реализация интерфейса по умолчанию.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_80___Реализация_интерфейса_по_умолчанию_ + + + diff --git a/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/ConsoleLogger.cs b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/ConsoleLogger.cs new file mode 100644 index 0000000..0a86abd --- /dev/null +++ b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/ConsoleLogger.cs @@ -0,0 +1,26 @@ +using System; + +class ConsoleLogger : ILogger +{ + public void Log(LogLevel logLevelm, string message) + { + switch (logLevelm) + { + case LogLevel.Debug: + Console.ForegroundColor = ConsoleColor.Green; + break; + case LogLevel.Info: + Console.ForegroundColor = ConsoleColor.White; + break; + case LogLevel.Warning: + Console.ForegroundColor = ConsoleColor.Yellow; + break; + case LogLevel.Error: + case LogLevel.Fatal: + Console.ForegroundColor = ConsoleColor.Red; + break; + } + Console.WriteLine($"{DateTime.Now}: {message}"); + Console.ResetColor(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/Extensions.cs b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/Extensions.cs new file mode 100644 index 0000000..4c907ce --- /dev/null +++ b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/Extensions.cs @@ -0,0 +1,10 @@ +using System; + +/// +/// Методы расширения +/// +public static class Extensions +{ + public static void Foo(this ILogger logger) + => Console.WriteLine("Extension Foo()"); +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/ILogger.cs b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/ILogger.cs new file mode 100644 index 0000000..b58d60d --- /dev/null +++ b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/ILogger.cs @@ -0,0 +1,16 @@ +using System; + +/// +/// *не желательно смешивать реализацию и абстракцию, +/// *то есть все методы интерфейса должны реализовываться вне их пространства +/// Интерфейс - это конктракт взаимодействия +/// тоесть возможность писать реализации методов прямов интерфейсе +/// имеет смысл если этот интерфейс реализует множество разных классов +/// тогда не нужно в каждом из них писать дополнительную реализацию нового метода +/// +public interface ILogger +{ + void Log(LogLevel logLevelm, string message); + void Bar() => Console.WriteLine("Bar"); + int Sum(int a, int b) => a + b; +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/LogLevel.cs b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/LogLevel.cs new file mode 100644 index 0000000..5dd4317 --- /dev/null +++ b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/LogLevel.cs @@ -0,0 +1,8 @@ +public enum LogLevel +{ + Debug, + Info, + Warning, + Error, + Fatal +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/Program.cs b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/Program.cs new file mode 100644 index 0000000..ff032ed --- /dev/null +++ b/LessonsAndTasks/Lesson 80 - Реализация интерфейса по умолчанию/Program.cs @@ -0,0 +1,19 @@ +/* + * реализация интерфейса по умолчанию в C# 8.0 + */ +using System; + +class Program +{ + static void Main() + { + ILogger logger = new ConsoleLogger(); + logger.Foo(); + logger.Bar(); + logger.Sum(1, 3); + logger.Log(LogLevel.Debug, "some event"); + logger.Log(LogLevel.Warning, "some warning"); + logger.Log(LogLevel.Fatal, "some fatal"); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 81 - Структуры и классы - отличия, struct vs class/81_Lesson - Структуры и классы - отличия, struct vs class.csproj b/LessonsAndTasks/Lesson 81 - Структуры и классы - отличия, struct vs class/81_Lesson - Структуры и классы - отличия, struct vs class.csproj new file mode 100644 index 0000000..8180762 --- /dev/null +++ b/LessonsAndTasks/Lesson 81 - Структуры и классы - отличия, struct vs class/81_Lesson - Структуры и классы - отличия, struct vs class.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_81___Структуры_и_классы___отличия__struct_vs_class_ + + + diff --git a/LessonsAndTasks/Lesson 81 - Структуры и классы - отличия, struct vs class/Program.cs b/LessonsAndTasks/Lesson 81 - Структуры и классы - отличия, struct vs class/Program.cs new file mode 100644 index 0000000..df1ca92 --- /dev/null +++ b/LessonsAndTasks/Lesson 81 - Структуры и классы - отличия, struct vs class/Program.cs @@ -0,0 +1,104 @@ +using System; + +/* + * структуры + */ +/* + * !!! КОГДА использовать структуру а когда нет !!!! + * Если в структуре нужно представить тип данных состоящий из примитивных типов + * которые логически просто должны быть вместе (мало полей)(пример структура Vector из UNITY) + * (только в том случае если не нужно использовать полиморфизм + * и наследование для этого типа данных) - выйгрыш в производительности + * невелируем сборщик мусора + */ +/// +/// Структуры - это тоже самое что и класс, только +/// они являются значимым (а не ссылочным) типом и не имеют наследования (но ИНТЕРФЕЙСЫ имеют) +/// Классы - ссылочный тип (reference type - управляемая куча) +/// у классов есть Finalizer(как Деструктор) +/// +public class ClassPoint +{ + public ClassPoint() { } + + public int X { get; set; } + public int Y { get; set; } + public virtual void Print() + => Console.WriteLine($"X: {X}, Y {Y}"); + /// + /// Мы можем переопределить его работу в классе + /// + ~ClassPoint() { } +} + +interface IInterface +{ + void Print(); +} + +/// +/// Значимый тип (value types - стек, ссылки на значения - в куче) - но также может храниться в управляемой куче +/// не работают virtual override при наследовании, protected для свойств и методов +/// мы не можем переопределить работу Finalizer (аналог деструктора в классах) +/// не можем инициализировать поля или свойства напрямую, задать переменные +/// реализация ctor конструктора без параметров невозможна +/// +public struct StructPoint : IInterface +{ + public int X { get; set; } + public int Y { get; set; } + + public StructPoint(int x, int y) + { + X = x; + Y = y; + } + + public void Print() => Console.WriteLine($"X: {X}, Y {Y}"); +} + +class Program +{ + static void Foo(ClassPoint classPoint) + { + classPoint.X++; + classPoint.Y++; + } + + static void Bar(StructPoint structPoint) + { + structPoint.X++; + structPoint.Y++; + } + + static void Main() + { + // при инициализации нужно найти место в управляемой куче, + // разместить там данные и получить на них ссылку - отсюда скорость работы выше + // плюс для очистки мусора замедляется работа всей программы + // инициализируем экземпляр класса в управляемую кучу + var classPoint = new ClassPoint() { X = 2, Y = 3 }; + // практически нулевая скорость создания объекта структуры (там уже данные) + // инициализируем поля структуры (помещает туда дефолтные значения) + var structPoint = new StructPoint() { X = 3, Y = 2 }; + Foo(classPoint); // тут передается ссылка (значения изменятся в экземпляре класса) + Bar(structPoint); // структуры передаются по значению (значения не изменятся в экземпляре структуры - без ref) + IInterface myInterface = structPoint; + classPoint.Print(); + myInterface.Print(); + + // каким образом работает метод Equals при сравнении структур и классов + var classPoint1 = new ClassPoint() { X = 2, Y = 3 }; + var classPoint2 = new ClassPoint() { X = 2, Y = 3 }; + + bool classesAreEqual = classPoint1.Equals(classPoint2); // false - по умолчанию сравнивает не значения, а ссылки + Console.WriteLine($"Equals class: {classesAreEqual}"); + + var structPoint1 = new StructPoint() { X = 2, Y = 3 }; + var structPoint2 = new StructPoint() { X = 2, Y = 3 }; + + bool structesAreEqual = structPoint1.Equals(structPoint2); // true - по умолчанию сравнивает значения, а не ссылки + Console.WriteLine($"Equals struct: {structesAreEqual}"); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 81_B - Benchmark DotNet/81_B_Lesson - Benchmark DotNet.csproj b/LessonsAndTasks/Lesson 81_B - Benchmark DotNet/81_B_Lesson - Benchmark DotNet.csproj new file mode 100644 index 0000000..afe2693 --- /dev/null +++ b/LessonsAndTasks/Lesson 81_B - Benchmark DotNet/81_B_Lesson - Benchmark DotNet.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_81_B___Benchmark_DotNet_ + + + diff --git a/LessonsAndTasks/Lesson 81_B - Benchmark DotNet/MyParser.cs b/LessonsAndTasks/Lesson 81_B - Benchmark DotNet/MyParser.cs new file mode 100644 index 0000000..c9e947d --- /dev/null +++ b/LessonsAndTasks/Lesson 81_B - Benchmark DotNet/MyParser.cs @@ -0,0 +1,31 @@ +using System; + +public class MyParser +{ + public int TryCathParse(string str) + { + // здесь нечего логировать и соответсвенно это бесполезная вещь + try + { + return int.Parse(str); + } + catch (Exception ex) + { + return 0; + } + } + + public int TryParse(string str) + { + int result; + if (!int.TryParse(str, out result)) + result = 0; + return result; + } + + public int TryParseFixed(string str) + { + int.TryParse(str, out int result); + return result; + } +} diff --git a/LessonsAndTasks/Lesson 81_B - Benchmark DotNet/Program.cs b/LessonsAndTasks/Lesson 81_B - Benchmark DotNet/Program.cs new file mode 100644 index 0000000..cac27dd --- /dev/null +++ b/LessonsAndTasks/Lesson 81_B - Benchmark DotNet/Program.cs @@ -0,0 +1,6 @@ +using System; + +class Program +{ + static void Main() => Console.WriteLine("Hello World!"); +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 82 - boxing and unboxing. Упаковка и распаковка значимых(value)типов/82_Lesson - boxing and unboxing. Упаковка и распаковка значимых(value)типов.csproj b/LessonsAndTasks/Lesson 82 - boxing and unboxing. Упаковка и распаковка значимых(value)типов/82_Lesson - boxing and unboxing. Упаковка и распаковка значимых(value)типов.csproj new file mode 100644 index 0000000..b6500f1 --- /dev/null +++ b/LessonsAndTasks/Lesson 82 - boxing and unboxing. Упаковка и распаковка значимых(value)типов/82_Lesson - boxing and unboxing. Упаковка и распаковка значимых(value)типов.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_82___boxing_and_unboxing._Упаковка_и_распаковка_значимых_value_типов_ + + + diff --git a/LessonsAndTasks/Lesson 82 - boxing and unboxing. Упаковка и распаковка значимых(value)типов/Program.cs b/LessonsAndTasks/Lesson 82 - boxing and unboxing. Упаковка и распаковка значимых(value)типов/Program.cs new file mode 100644 index 0000000..37121e6 --- /dev/null +++ b/LessonsAndTasks/Lesson 82 - boxing and unboxing. Упаковка и распаковка значимых(value)типов/Program.cs @@ -0,0 +1,33 @@ +using System; + +/* + * boxing and unboxing (значимые в стеке, ссылочные в куче)(лучше избегать таких ситуаций) + */ +interface IPrintable +{ + void Print(); +} + +struct Point : IPrintable +{ + public int X { get; set; } + public int Y { get; set; } + public void Print() => Console.WriteLine($"X:{X}; Y:{Y};"); +} + +class Program +{ + static void Print(IPrintable printable) => printable.Print(); + + public static void Main() + { + int a = 1; + object b = a; // boxing + int c = (int)b; // unboxing + // decimal d = (decimal)b; // InvalidCastException + var point = new Point { X = 3, Y = 3 }; // boxing (ссылку содержит на данные в куче) + Print(point); + int d = 0; d.GetType(); // boxing + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/83_Lesson - Обобщения, generic типы, методы и классы.csproj b/LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/83_Lesson - Обобщения, generic типы, методы и классы.csproj new file mode 100644 index 0000000..3531670 --- /dev/null +++ b/LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/83_Lesson - Обобщения, generic типы, методы и классы.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_83___Обобщения__generic_типы__методы_и_классы_ + + + diff --git a/LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/MyList.cs b/LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/MyList.cs new file mode 100644 index 0000000..630bdea --- /dev/null +++ b/LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/MyList.cs @@ -0,0 +1,22 @@ +using System; + +class MyList +{ + private T[] _array = Array.Empty(); + public T this[int index] + { + get => _array[index]; + set => _array[index] = value; + } + + public int Count => _array.Length; + + public void Add(T value) + { + var newArray = new T[_array.Length + 1]; + for (int el = 0; el < _array.Length; el++) + newArray[el] = _array[el]; + newArray[_array.Length] = value; + _array = newArray; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/Program.cs b/LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/Program.cs new file mode 100644 index 0000000..59dc642 --- /dev/null +++ b/LessonsAndTasks/Lesson 83 - Обобщения, generic типы, методы и классы/Program.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections; +using System.Collections.Generic; // обобщенные коллекции + +/* + * Обобщения(Generics) + */ +/// +/// Обобщения(Generics) - это такие конструкции языка которые позволяют +/// писать код который будет одинаково работать с различными типами данных +/// общий код для разных типов данных, при этом мы сохраняем строгую типизацию языка +/// получаем несколько еще очень полезных и нужных бонусов +/// +/// Например: +/// позволяет избежать процесса упаковки и распаковки значимых типов, что увеличивает производительность кода +/// +class Program +{ + static void Main() + { + int a = 1, b = 5; + string c = "aa", d = "bb"; + Console.WriteLine($"a = {a}, b = {b}"); + Console.WriteLine($"str_d = {d}, str_c = {c}"); + + Swap(ref a, ref b); + SwapType(ref c, ref d); + + Console.WriteLine($"a = {a}, b = {b}"); + Console.WriteLine($"str_d = {d}, str_c = {c}"); + + // List также использует обобщения + var list = new List(); + list.Add(2); + list.Add(5); + Console.WriteLine($"el[1] list: {list[0]}"); + list[0] = 1; + Console.WriteLine($"Change el[1] list: {list[0]}"); + + // ArrayList - аналог + // но проблемы с упаковкой распаковкой так как это тип данных object + // *почти не используется + ArrayList arrayList = new ArrayList(); + arrayList.Add(2); + arrayList.Add("33"); + Console.WriteLine($"el[1] arrayList: {arrayList[0]}"); + arrayList[0] = 1; + Console.WriteLine($"Change el[1] arrayList: {arrayList[0]}"); + + // Свой List + var listString = new MyList(); + listString.Add("aaa"); + listString.Add("bbb"); + Console.WriteLine($"1: {listString[0]} 2: {listString[1]}"); + Console.ReadKey(); + } + + static void Swap(ref int a, ref int b) + { + int temp = a; + a = b; + b = temp; + } + + static void SwapType(ref T a, ref T b) + { + T temp = a; + a = b; + b = temp; + } + + static T Foo() + { + return default(T); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/84_Lesson - Обобщения - производительность, коллекции.csproj b/LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/84_Lesson - Обобщения - производительность, коллекции.csproj new file mode 100644 index 0000000..2eb6417 --- /dev/null +++ b/LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/84_Lesson - Обобщения - производительность, коллекции.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + Lesson_84___Обобщения___производительность__коллекции_ + + + diff --git a/LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/Program.cs b/LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/Program.cs new file mode 100644 index 0000000..4793803 --- /dev/null +++ b/LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/Program.cs @@ -0,0 +1,9 @@ +using System; + +/* + * Обобщения (Generics) (Джэнэрик) + */ +class Program +{ + static void Main() => Console.WriteLine("Hello World!"); +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/SwapTestClass.cs b/LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/SwapTestClass.cs new file mode 100644 index 0000000..52b6fa6 --- /dev/null +++ b/LessonsAndTasks/Lesson 84 - Обобщения - производительность, коллекции/SwapTestClass.cs @@ -0,0 +1,16 @@ +public class SwapTestClass +{ + public static void GenericSwap(ref T a, ref T b) + { + T temp = a; + a = b; + b = temp; + } + + public static void Swap(ref object a, ref object b) + { + object temp = a; + a = b; + b = temp; + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций.sln b/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций.sln new file mode 100644 index 0000000..936f17a --- /dev/null +++ b/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1738 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson 9 - Приоритет арифметических операций", "Lesson 9 - Приоритет арифметических операций\Lesson 9 - Приоритет арифметических операций.csproj", "{BD9FA8EA-73BB-411C-B159-E73F57A9DCBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BD9FA8EA-73BB-411C-B159-E73F57A9DCBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD9FA8EA-73BB-411C-B159-E73F57A9DCBA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD9FA8EA-73BB-411C-B159-E73F57A9DCBA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD9FA8EA-73BB-411C-B159-E73F57A9DCBA}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A32FCC3B-77D6-4D78-890A-26899A1DE8B8} + EndGlobalSection +EndGlobal diff --git a/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/09_Lesson - Приоритет арифметических операций.csproj b/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/09_Lesson - Приоритет арифметических операций.csproj new file mode 100644 index 0000000..375e9b8 --- /dev/null +++ b/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/09_Lesson - Приоритет арифметических операций.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {BD9FA8EA-73BB-411C-B159-E73F57A9DCBA} + Exe + Lesson_9___Приоритет_арифметических_операций + Lesson 9 - Приоритет арифметических операций + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/App.config b/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/Program.cs b/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/Program.cs new file mode 100644 index 0000000..c3bdcc2 --- /dev/null +++ b/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/Program.cs @@ -0,0 +1,17 @@ +using System; + +/* + * Приоритет арифметических операций + */ +class Program +{ + static void Main() + { + int result = 2 + 2 * 2; + int result1 = (2 + 2) * 2; // как и в математике обозначается "(" ")" + + Console.WriteLine(result); + Console.WriteLine(result1); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/Properties/AssemblyInfo.cs b/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..90ab7b6 --- /dev/null +++ b/LessonsAndTasks/Lesson 9 - Приоритет арифметических операций/Lesson 9 - Приоритет арифметических операций/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Lesson 9 - Приоритет арифметических операций")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lesson 9 - Приоритет арифметических операций")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("bd9fa8ea-73bb-411c-b159-e73f57a9dcba")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Lessons.sln b/LessonsAndTasks/Lessons.sln new file mode 100644 index 0000000..a3c5a2e --- /dev/null +++ b/LessonsAndTasks/Lessons.sln @@ -0,0 +1,583 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33829.357 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "02_Lesson - Типы Данных", "Lesson 2 - Типы Данных\Lesson 2 Типы Данных\02_Lesson - Типы Данных.csproj", "{DEBC4CED-8964-455A-8DEB-6FEADAF2851F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "01_Lesson - Первая программа", "Lesson 1 - Первая программа\Lesson 1 - Первая программа\01_Lesson - Первая программа.csproj", "{BEC8AD79-F534-495C-B1AD-C63EFDCCA555}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "03_Lesson - Переменные в языке", "Lesson 3 - Переменные в языке\Lesson 3 - Переменные в языке\03_Lesson - Переменные в языке.csproj", "{188BE1DF-C5E2-432A-A34B-B5B84F878235}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "04_Lesson - Ввод данных в консоль", "Lesson 4 - Ввод данных в консоль\Lesson 4 - Ввод данных в консоль\04_Lesson - Ввод данных в консоль.csproj", "{B1DC4F5A-1A96-4068-B1FA-2E78286AE2C4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "05_Lesson - конвертация строки, класс Convert", "Lesson 5 - Конвертация строки, класс Convert\Lesson 5 - конвертация строки, класс Convert\05_Lesson - конвертация строки, класс Convert.csproj", "{57ACDCF4-1C18-4EDE-9F92-4BA2791B523C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "06_Lesson - Конвертация строки parse и tryparse", "Lesson 6 - Конвертация строки parse и tryparse\Lesson 6 - Конвертация строки parse и tryparse\06_Lesson - Конвертация строки parse и tryparse.csproj", "{473B7C29-AD6F-41A3-BBF5-7F0D1968BE42}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "07_Lesson - Что делать если закрывается консоль", "Lesson 7 - Что делать если закрывается консоль\Lesson 7 - Что делать если закрывается консоль\07_Lesson - Что делать если закрывается консоль.csproj", "{29C3ECAE-8577-4D90-9DED-7F15E6760865}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "08_Lesson - Арифметические операции с числами", "Lesson 8 - Арифметические операции с числами\Lesson 8 - Арифметические операции с числами\08_Lesson - Арифметические операции с числами.csproj", "{2543A1D0-1B38-4E19-96E4-77E635CD768F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09_Lesson - Приоритет арифметических операций", "Lesson 9 - Приоритет арифметических операций\Lesson 9 - Приоритет арифметических операций\09_Lesson - Приоритет арифметических операций.csproj", "{BD9FA8EA-73BB-411C-B159-E73F57A9DCBA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "10_Lesson - Несколько проектов в одном решении", "Lesson 10 - Несколько проектов в одном решении\Lesson 10 - Несколько проектов в одном решении\10_Lesson - Несколько проектов в одном решении.csproj", "{A7E7EEDE-05D5-4467-B092-5AACE88F5A90}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "08_Task Home 1 - Среднее арифметическое двух чисел", "Task Home 1 - Среднее арифметическое двух чисел\08_Task Home 1 - Среднее арифметическое двух чисел.csproj", "{F55F7A32-FC19-47A6-A9C1-07C5FEB2C394}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "11_Lesson - Инкремент и декремент. Постфиксный и префиксный", "Lesson 11 - Инкремент и декремент. Постфиксный и префиксный\11_Lesson - Инкремент и декремент. Постфиксный и префиксный.csproj", "{3D82C6D9-EFBC-4F51-9A40-76D19265D814}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "08_Task Home 2 - Введите три числа и выведите их произведение и суммы", "Task Home 2 - Введите три числа и выведите их произведение и суммы\08_Task Home 2 - Введите три числа и выведите их произведение и суммы.csproj", "{DA90C9B8-A37B-41F1-98E1-25EF68A3A3CC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "08_Task Home 3 - Конвертер валюты", "Task Home 3 - Конвертер валюты\08_Task Home 3 - Конвертер валюты.csproj", "{45F5A326-539B-4E99-9A7A-5875EE60E13B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "12_Lesson - Операторы сравнения. Операции сравнения", "Lesson 12 - Операторы сравнения. Операции сравнения\12_Lesson - Операторы сравнения. Операции сравнения.csproj", "{C3CDCFE1-7C6D-4122-9C0B-F82FAB30999E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "13_Lesson - Конструкция if else", "Lesson 13 - Конструкция if else\13_Lesson - Конструкция if else.csproj", "{AB913711-B99C-4D68-B9EF-6D66C437F97A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "14_Lesson - Сокращённые логические операции. Логические операторы", "Lesson 14 - Сокращённые логические операции. Логические операторы\14_Lesson - Сокращённые логические операции. Логические операторы.csproj", "{668DAC0A-01C5-4DD0-ACF3-0D4E9485F449}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Task Home 4 - Проверка числа на чётность", "Task Home 4 - Проверка числа на чётность\Task Home 4 - Проверка числа на чётность.csproj", "{9124A33F-1F0D-4788-8CD8-156AE083D304}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "15_Lesson - Условный оператор множественного выбора switch", "Lesson 15 - Условный оператор множественного выбора switch\15_Lesson - Условный оператор множественного выбора switch.csproj", "{ACE8ABDC-0D05-4963-AFD8-CFF298A85A9C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Task Home 5 - Калькулятор Switch и на If Else", "Task Home 5 - Калькулятор Switch и на If Else\Task Home 5 - Калькулятор Switch и на If Else.csproj", "{C9595BDE-8D44-4EF8-8451-EBEEEE2E31D2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "18_Lesson - Цикл for", "Lesson 18 - Цикл for\18_Lesson - Цикл for.csproj", "{608C0926-91C6-4B0C-B6BF-4AE25688AB70}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "19_Lesson - Цикл for в обратном порядке", "Lesson 19 - Цикл for в обратном порядке\19_Lesson - Цикл for в обратном порядке.csproj", "{EE26A5F9-9C69-470B-94C4-7F7DE42215B1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "20_Lesson - Ключевое слово break (оператор)", "Lesson 20 - Ключевое слово break (оператор)\20_Lesson - Ключевое слово break (оператор).csproj", "{E962F366-B388-4EE4-B276-000F1B4B8052}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "21_Lesson - Ключевое слово continue", "Lesson 21 - Ключевое слово continue\21_Lesson - Ключевое слово continue.csproj", "{C8EB51D4-B80E-4227-9DC6-6E6D088F24BB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "22_Lesson - Вложенные циклы. Как работают", "Lesson 22 - Вложенные циклы. Как работают\22_Lesson - Вложенные циклы. Как работают.csproj", "{542E79A5-E2AE-4446-AFF6-17D55EDA286D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Task Home 6 - Как нарисовать треугольник в консоли", "Task Home 6 - Как нарисовать треугольник в консоли\Task Home 6 - Как нарисовать треугольник в консоли.csproj", "{4FFDDB39-D141-4EEA-ACC3-767C5BE4D955}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "23_Lesson - Тернарный оператор. Что это. Пример", "Lesson 23 - Тернарный оператор. Что это. Пример\23_Lesson - Тернарный оператор. Что это. Пример.csproj", "{C3596099-8F86-47F2-BA83-EA56E3BC76D0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "24_Lesson - Что такое массивы. Одномерный массив. Примеры", "Lesson 24 - Что такое массивы. Одномерный массив. Примеры\24_Lesson - Что такое массивы. Одномерный массив. Примеры.csproj", "{46607273-7BE4-41A6-90E5-ACFC1479A9AC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "25_Lesson - Инициализация массива. Способы", "Lesson 25 - Инициализация массива. Способы\25_Lesson - Инициализация массива. Способы.csproj", "{F1F3121A-C3D9-46DB-A69E-CF810CD8A362}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "26_Lesson - Вывод массива. Перебор массива. Массивы и циклы", "Lesson 26 - Вывод массива. Перебор массива. Массивы и циклы\26_Lesson - Вывод массива. Перебор массива. Массивы и циклы.csproj", "{C0D360CD-3C06-45CC-A0B0-4A5AC0783320}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "27_Lesson - Как работать с массивами на самом деле", "Lesson 27 - Как работать с массивами на самом деле\27_Lesson - Как работать с массивами на самом деле.csproj", "{027E7BEF-CE49-4672-93CD-9F3F4471B92A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "29_Lesson - Многомерные массивы. Двумерный прямоугольный массив", "Lesson 29 - Многомерные массивы. Двумерный прямоугольный массив\29_Lesson - Многомерные массивы. Двумерный прямоугольный массив.csproj", "{E85F79E9-98D3-4451-9CF9-163631DBB6AF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "30_Lesson - Двумерный массив. Объявление. Инициализация. Индексы", "Lesson 30 - Двумерный массив. Объявление. Инициализация. Индексы\30_Lesson - Двумерный массив. Объявление. Инициализация. Индексы.csproj", "{31F0D7A5-6BDF-49BD-B2A7-3BB7879213BB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "31_Lesson - Вывод двумерного массива", "Lesson 31 - Вывод двумерного массива\31_Lesson - Вывод двумерного массива.csproj", "{8A4C8531-FC1F-4BE9-9625-B359984F0CEB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "32_Lesson - Заполнение двумерного масива, случайными числами", "Lesson 32 - Заполнение двумерного масива, случайными числами\32_Lesson - Заполнение двумерного масива, случайными числами.csproj", "{78D5B5FF-0681-49E1-9752-B4AB395A47AB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "33_Lesson - Ступенчатые (зубчатые) массивы", "Lesson 33 - Ступенчатые (зубчатые) массивы\33_Lesson - Ступенчатые (зубчатые) массивы.csproj", "{9AA9A703-8243-4EAE-B022-EE2FF4027A85}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "34_Lesson - Трехмерные массивы, многомерные массивы любой мерности", "Lesson 34 - Трехмерные массивы, многомерные массивы любой мерности\34_Lesson - Трехмерные массивы, многомерные массивы любой мерности.csproj", "{AA3C2474-5FFC-45B8-8C23-CCE0E2DBD851}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "35_Lesson - Функции и методы, что это, примеры", "Lesson 35 - Функции и методы, что это, примеры\35_Lesson - Функции и методы, что это, примеры.csproj", "{D456B58D-3801-4B76-BE69-82A4FDB5A993}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "36_Lesson - Перегрузка методов", "Lesson 36 - Перегрузка методов\36_Lesson - Перегрузка методов.csproj", "{F34542A8-0AAA-46C7-98DE-0DF72E9A7E2F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "37_Lesson - Область видимости, контекст переменной, конфликт областей", "Lesson 37 - Область видимости, контекст переменной, конфликт областей\37_Lesson - Область видимости, контекст переменной, конфликт областей.csproj", "{149CE343-79C3-4AE2-B61E-51845872C151}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "38_Lesson - Ссылочные и значимые типы, стек и куча", "Lesson 38 - Ссылочные и значимые типы, стек и куча\38_Lesson - Ссылочные и значимые типы, стек и куча.csproj", "{AA330FB4-E2E1-4570-9ECD-65F8100E90D5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "39_Lesson - Что такое NULL", "Lesson 39 - Что такое NULL\39_Lesson - Что такое NULL.csproj", "{5BE6607E-0B8C-441E-B80E-14236D377D08}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "40_Lesson - Оператор объединения с NULL", "Lesson 40 - Оператор объекдинения с NULL\40_Lesson - Оператор объединения с NULL.csproj", "{D4526E9D-E808-4922-8841-96A03BB14650}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "42_Lesson - Оператор условного NULL", "Lesson 42 - Оператор условного NULL\42_Lesson - Оператор условного NULL.csproj", "{9737100B-A415-4E7D-ABD1-0D2B89981F16}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "42_2_Lesson - Example 1 - Оператор условного NULL", "Lesson 42_2 - Example 1 - Оператор условного NULL\42_2_Lesson - Example 1 - Оператор условного NULL.csproj", "{CD0F3063-D5AC-4B78-BC99-729D6FDD7478}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "43_Lesson - Ключевое слово ref, что это и предназначение", "Lesson 43 - Ключевое слово ref, что это и предназначение\43_Lesson - Ключевое слово ref, что это и предназначение.csproj", "{EB3EC543-CB41-4E1A-9500-9AEF5C3BC0B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "44_Lesson - Ключевое слово out, разница out и ref", "Lesson 44 - Ключевое слово out, разница out и ref\44_Lesson - Ключевое слово out, разница out и ref.csproj", "{ACE28A2C-EB6B-4244-B493-DD99867CB90D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "45_Lesson - Модификатор in, разница in ref и out", "Lesson 45 - Модификатор in, разница in ref и out\45_Lesson - Модификатор in, разница in ref и out.csproj", "{BFE4216D-7D2E-416A-834D-43AA1C639524}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "46_Lesson - Ключевое слово params", "Lesson 46 - Ключевое слово params\46_Lesson - Ключевое слово params.csproj", "{69B61D89-B578-4F07-9DD5-7204D4F682BD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "47_Lesson - Необязательные параметры метода (параметры по умолчанию)", "Lesson 47 - Необязательные параметры метода (параметры по умолчанию)\47_Lesson - Необязательные параметры метода (параметры по умолчанию).csproj", "{9B7F8691-E337-4CA4-9E24-46EF69803734}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "48_Lesson - Именнованные параметры", "Lesson 48 - Именнованные параметры\48_Lesson - Именнованные параметры.csproj", "{A3DCBFE2-2D22-4464-9F15-3D71EDBB5F4D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "49_Lesson - Что такое рекурсия, переполнение стека", "Lesson 49 - Что такое рекурсия, переполнение стека\49_Lesson - Что такое рекурсия, переполнение стека.csproj", "{AE6951C4-54B0-4EC4-8E52-8BF73EF1766C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "50_Lesson - Преобразование и приведение, явное и неявное", "Lesson 50 - Преобразование и приведение, явное и неявное\50_Lesson - Преобразование и приведение, явное и неявное.csproj", "{4E053D6F-23F8-4262-8331-7852E8788FB2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "51_Lesson - Арифметическое переполнение, checked unchecked", "Lesson 51 - Арифметическое переполнение, checked unchecked\51_Lesson - Арифметическое переполнение, checked unchecked.csproj", "{768CA07B-FAC9-4233-BB4A-E522E5CED0FA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "52_Lesson - Что такое Nullable, Null совместимые значимые типы Nullable", "Lesson 52 - Что такое Nullable, Null совместимые значимые типы Nullable\52_Lesson - Что такое Nullable, Null совместимые значимые типы Nullable.csproj", "{B2FBBA96-D2CA-4051-A9FF-36D4FD2FE1BC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "53_Lesson - var . Это не тип данных. Неявно типизированные переменные", "Lesson 53 - var . Это не тип данных. Неявно типизированные переменные\53_Lesson - var . Это не тип данных. Неявно типизированные переменные.csproj", "{E927DC0E-7736-47FF-B661-96534265380B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "54_Lesson - enum, что это, и для чего нужно - перечисления", "Lesson 54 - enum, что это, и для чего нужно - перечисления\54_Lesson - enum, что это, и для чего нужно - перечисления.csproj", "{56F7519C-2D4F-4939-B7DB-295EC0BDBF6C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "55_Lesson - Что такое КЛАСС - ООП, объект, экземпляр класса", "Lesson 55 - Что такое КЛАСС - ООП, объект, экземпляр класса\55_Lesson - Что такое КЛАСС - ООП, объект, экземпляр класса.csproj", "{730EDE55-501D-4A60-B7E8-F6ADC743159C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "56_Lesson - Методы и классы, ООП, вызов метода экземпляра класса", "Lesson 56 - Методы и классы, ООП, вызов метода объекта класса\56_Lesson - Методы и классы, ООП, вызов метода экземпляра класса.csproj", "{E6B73F3E-92DD-4737-8FF8-A78B97CB387C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "57_Lesson - Модификаторы доступа, public, protected, private", "Lesson 57 - Модификаторы доступа, public, protected, private\57_Lesson - Модификаторы доступа, public, protected, private.csproj", "{3378E01F-43A7-4F27-8944-2FF46C35C4F0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "58_Lesson - ИНКАПСУЛЯЦИЯ, примеры", "Lesson 58 - ИНКАПСУЛЯЦИЯ, примеры\58_Lesson - ИНКАПСУЛЯЦИЯ, примеры.csproj", "{2107BF8F-95A9-4A7A-9CB0-F676E59A887A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "59_Lesson - Что такое конструктор класса, для чего, по умолчанию", "Lesson 59 - Что такое конструктор класса, для чего, по умолчанию\59_Lesson - Что такое конструктор класса, для чего, по умолчанию.csproj", "{90FB198E-A723-4127-B38F-6F3FE2180AED}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "60_Lesson - Перегрузка конструкторов класса, что это", "Lesson 60 - Перегрузка конструкторов класса, что это\60_Lesson - Перегрузка конструкторов класса, что это.csproj", "{0A6CE006-5DFA-4478-8ADC-3CA0F16CACBA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "61_Lesson - Ключевое слово this, this в конструкторе", "Lesson 61 - Ключевое слово this, this в конструкторе\61_Lesson - Ключевое слово this, this в конструкторе.csproj", "{A450AABD-15BC-433E-B9B9-9D91BF5F4BFA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "62_Lesson - Свойства get, set ключевое слово value, авто-свойства", "Lesson 62 - Свойства get, set ключевое слово value, авто-свойства\62_Lesson - Свойства get, set ключевое слово value, авто-свойства.csproj", "{D32F4616-1733-4491-81C6-D77F975DF171}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "63_Lesson - Статические поля класса, ключевое слово static", "Lesson 63 - Статические поля класса, ключевое слово static\63_Lesson - Статические поля класса, ключевое слово static.csproj", "{CAD89597-A781-491C-9B95-0C2D6DA3C70B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "64_Lesson - Статические методы, свойства, работа static", "Lesson 64 - Статические методы, свойства, работа static\64_Lesson - Статические методы, свойства, работа static.csproj", "{C203E2FB-EEB4-4496-9BC2-2951920CDD56}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "65_Lesson - Статический конструктор, как работает ключ. слово static", "Lesson 65 - Статический конструктор, как работает ключ. слово static\65_Lesson - Статический конструктор, как работает ключ. слово static.csproj", "{FDD50EA7-65F8-459D-9266-51E229757B78}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "66_Lesson - Статический класс", "Lesson 66 - Статический класс\66_Lesson - Статический класс.csproj", "{78912F30-35BD-411C-8CA9-49A2A3726745}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "67_Lesson - Методы расширения, extension", "Lesson 67 - Методы расширения, extension\67_Lesson - Методы расширения, extension.csproj", "{885DA3AA-3B3C-43EC-823D-A0B73D359B6A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "68_Lesson - partial класс, частичные типы, partial методы", "Lesson 68 - partial класс, частичные типы, partial методы\68_Lesson - partial класс, частичные типы, partial методы.csproj", "{A3011C15-258D-4A62-B01B-91EFEEA9C936}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "16_Lesson - Цикл while", "Lesson 16 - Цикл while\16_Lesson - Цикл while.csproj", "{8FCFD429-4E9C-4B5D-B3C5-CF398BD0F3F2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "17_Lesson - Цикл do while", "Lesson 17 - Цикл do while\17_Lesson - Цикл do while.csproj", "{60AE567A-7D98-47A8-BBA3-74DC52A32BC8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "41_Lesson - Оператор присваивания объединения со значением NULL", "Lesson 41 - Оператор присваивания объединения со значением NULL\41_Lesson - Оператор присваивания объединения со значением NULL.csproj", "{8E106150-257D-45F1-84BD-FC7AAE39FF5B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "40_wf_Lesson - Оператор объединения с NULL", "40_wf_Lesson - Оператор объединения с NULL\40_wf_Lesson - Оператор объединения с NULL.csproj", "{C89BEC2D-AC6B-4836-8D04-80B00362656A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "28_Lesson - Индексы и диапазоны", "Lesson 28 - Индексы и диапазоны\28_Lesson - Индексы и диапазоны.csproj", "{5DDDBF07-3D23-47EB-9816-A833D0B64D68}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "69_Lesson - const vs readonly - разница между ними(const и static)", "Lesson 69 - const vs readonly - разница между ними(const и static)\69_Lesson - const vs readonly - разница между ними(const и static).csproj", "{6357636C-FF16-4E60-A20E-5311B8375DBE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "70_Lesson - синтаксис инициализации объектов класса", "Lesson 70 - синтаксис инициализации объектов класса\70_Lesson - синтаксис инициализации объектов класса.csproj", "{1CBF1FCB-88B0-44E3-83B3-C3AA73AAE61C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "71_Lesson - НАСЛЕДОВАНИЕ", "Lesson 71 - НАСЛЕДОВАНИЕ\71_Lesson - НАСЛЕДОВАНИЕ.csproj", "{0A4585EC-8C47-4A26-9A18-1D69980D1E2B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "81_81B_84_Benchmark", "Benchmark\81_81B_84_Benchmark.csproj", "{C1093981-1075-447D-8BFA-EDB9D10FCB64}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "72_Lesson - Ключевое слово base, наследование и конструктор класса", "Lesson 72 - Ключевое слово base, наследование и конструктор класса\72_Lesson - Ключевое слово base, наследование и конструктор класса.csproj", "{2E1EE3FA-1599-4322-B33D-8B598924BB88}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "73_Lesson - Операторы as is, наследование и приведение типов", "Lesson 73 - Операторы as is, наследование и приведение типов\73_Lesson - Операторы as is, наследование и приведение типов.csproj", "{938BC277-52D7-4EFC-BECD-8D1901EAD397}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "74_Lesson - protected - модификатор доступа", "Lesson 74 - protected - модификатор доступа\74_Lesson - protected - модификатор доступа.csproj", "{5F478978-6103-4BBD-B754-3146DC02F776}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "75_Lesson - ПОЛИМОРФИЗМ, виртуальные методы, virtual override", "Lesson 75 - ПОЛИМОРФИЗМ, виртуальные методы, virtual override\75_Lesson - ПОЛИМОРФИЗМ, виртуальные методы, virtual override.csproj", "{F6F8B9FF-BAD2-4378-8586-1A3E60375557}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "76_Lesson - Абстрактные классы, abstract", "Lesson 76 - Абстрактные классы, abstract\76_Lesson - Абстрактные классы, abstract.csproj", "{6C7D24B6-B9B1-4F96-A4FF-A9994F6B1801}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "77_Lesson - Интерфейсы, зачем нужны и как используются, interface", "Lesson 77 - Интерфейсы, зачем нужны и как используются, interface\77_Lesson - Интерфейсы, зачем нужны и как используются, interface.csproj", "{477C0E7B-8542-4B12-AF5D-D7220F8908D6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "78_Lesson - Наследование интерфейсов, множественное наследование", "Lesson 78 - Наследование интерфейсов, множественное наследование\78_Lesson - Наследование интерфейсов, множественное наследование.csproj", "{780E2867-4EC4-420C-A116-959826DE2015}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "79_Lesson - Интерфейсы - Явная реализация", "Lesson 79 - Интерфейсы - Явная реализация\79_Lesson - Интерфейсы - Явная реализация.csproj", "{4BF5287A-52FF-4DF1-9C23-70F0EC0F620B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "80_Lesson - Реализация интерфейса по умолчанию", "Lesson 80 - Реализация интерфейса по умолчанию\80_Lesson - Реализация интерфейса по умолчанию.csproj", "{1C840A7E-8AC1-47F9-AD84-9521D91D3594}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "81_Lesson - Структуры и классы - отличия, struct vs class", "Lesson 81 - Структуры и классы - отличия, struct vs class\81_Lesson - Структуры и классы - отличия, struct vs class.csproj", "{AF7FF555-8B13-4C9C-9C1E-1685449E0B50}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "81_B_Lesson - Benchmark DotNet", "Lesson 81_B - Benchmark DotNet\81_B_Lesson - Benchmark DotNet.csproj", "{2D2C9F96-471C-4BE6-BB6D-BDA7DEE8F985}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "82_Lesson - boxing and unboxing. Упаковка и распаковка значимых(value)типов", "Lesson 82 - boxing and unboxing. Упаковка и распаковка значимых(value)типов\82_Lesson - boxing and unboxing. Упаковка и распаковка значимых(value)типов.csproj", "{4B334357-EFF1-4C7E-871D-421D469ED12E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "83_Lesson - Обобщения, generic типы, методы и классы", "Lesson 83 - Обобщения, generic типы, методы и классы\83_Lesson - Обобщения, generic типы, методы и классы.csproj", "{78595B16-7D12-44FB-AD7F-8822979E83D9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "84_Lesson - Обобщения - производительность, коллекции", "Lesson 84 - Обобщения - производительность, коллекции\84_Lesson - Обобщения - производительность, коллекции.csproj", "{B5B0A6BF-1386-4749-B5CF-EF0C7200E661}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DEBC4CED-8964-455A-8DEB-6FEADAF2851F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DEBC4CED-8964-455A-8DEB-6FEADAF2851F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DEBC4CED-8964-455A-8DEB-6FEADAF2851F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DEBC4CED-8964-455A-8DEB-6FEADAF2851F}.Release|Any CPU.Build.0 = Release|Any CPU + {BEC8AD79-F534-495C-B1AD-C63EFDCCA555}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BEC8AD79-F534-495C-B1AD-C63EFDCCA555}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BEC8AD79-F534-495C-B1AD-C63EFDCCA555}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BEC8AD79-F534-495C-B1AD-C63EFDCCA555}.Release|Any CPU.Build.0 = Release|Any CPU + {188BE1DF-C5E2-432A-A34B-B5B84F878235}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {188BE1DF-C5E2-432A-A34B-B5B84F878235}.Debug|Any CPU.Build.0 = Debug|Any CPU + {188BE1DF-C5E2-432A-A34B-B5B84F878235}.Release|Any CPU.ActiveCfg = Release|Any CPU + {188BE1DF-C5E2-432A-A34B-B5B84F878235}.Release|Any CPU.Build.0 = Release|Any CPU + {B1DC4F5A-1A96-4068-B1FA-2E78286AE2C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1DC4F5A-1A96-4068-B1FA-2E78286AE2C4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1DC4F5A-1A96-4068-B1FA-2E78286AE2C4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1DC4F5A-1A96-4068-B1FA-2E78286AE2C4}.Release|Any CPU.Build.0 = Release|Any CPU + {57ACDCF4-1C18-4EDE-9F92-4BA2791B523C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {57ACDCF4-1C18-4EDE-9F92-4BA2791B523C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {57ACDCF4-1C18-4EDE-9F92-4BA2791B523C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {57ACDCF4-1C18-4EDE-9F92-4BA2791B523C}.Release|Any CPU.Build.0 = Release|Any CPU + {473B7C29-AD6F-41A3-BBF5-7F0D1968BE42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {473B7C29-AD6F-41A3-BBF5-7F0D1968BE42}.Debug|Any CPU.Build.0 = Debug|Any CPU + {473B7C29-AD6F-41A3-BBF5-7F0D1968BE42}.Release|Any CPU.ActiveCfg = Release|Any CPU + {473B7C29-AD6F-41A3-BBF5-7F0D1968BE42}.Release|Any CPU.Build.0 = Release|Any CPU + {29C3ECAE-8577-4D90-9DED-7F15E6760865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29C3ECAE-8577-4D90-9DED-7F15E6760865}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29C3ECAE-8577-4D90-9DED-7F15E6760865}.Release|Any CPU.ActiveCfg = Release|Any CPU + {29C3ECAE-8577-4D90-9DED-7F15E6760865}.Release|Any CPU.Build.0 = Release|Any CPU + {2543A1D0-1B38-4E19-96E4-77E635CD768F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2543A1D0-1B38-4E19-96E4-77E635CD768F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2543A1D0-1B38-4E19-96E4-77E635CD768F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2543A1D0-1B38-4E19-96E4-77E635CD768F}.Release|Any CPU.Build.0 = Release|Any CPU + {BD9FA8EA-73BB-411C-B159-E73F57A9DCBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD9FA8EA-73BB-411C-B159-E73F57A9DCBA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD9FA8EA-73BB-411C-B159-E73F57A9DCBA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD9FA8EA-73BB-411C-B159-E73F57A9DCBA}.Release|Any CPU.Build.0 = Release|Any CPU + {A7E7EEDE-05D5-4467-B092-5AACE88F5A90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A7E7EEDE-05D5-4467-B092-5AACE88F5A90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A7E7EEDE-05D5-4467-B092-5AACE88F5A90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A7E7EEDE-05D5-4467-B092-5AACE88F5A90}.Release|Any CPU.Build.0 = Release|Any CPU + {F55F7A32-FC19-47A6-A9C1-07C5FEB2C394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F55F7A32-FC19-47A6-A9C1-07C5FEB2C394}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F55F7A32-FC19-47A6-A9C1-07C5FEB2C394}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F55F7A32-FC19-47A6-A9C1-07C5FEB2C394}.Release|Any CPU.Build.0 = Release|Any CPU + {3D82C6D9-EFBC-4F51-9A40-76D19265D814}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3D82C6D9-EFBC-4F51-9A40-76D19265D814}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3D82C6D9-EFBC-4F51-9A40-76D19265D814}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3D82C6D9-EFBC-4F51-9A40-76D19265D814}.Release|Any CPU.Build.0 = Release|Any CPU + {DA90C9B8-A37B-41F1-98E1-25EF68A3A3CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA90C9B8-A37B-41F1-98E1-25EF68A3A3CC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA90C9B8-A37B-41F1-98E1-25EF68A3A3CC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA90C9B8-A37B-41F1-98E1-25EF68A3A3CC}.Release|Any CPU.Build.0 = Release|Any CPU + {45F5A326-539B-4E99-9A7A-5875EE60E13B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {45F5A326-539B-4E99-9A7A-5875EE60E13B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {45F5A326-539B-4E99-9A7A-5875EE60E13B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {45F5A326-539B-4E99-9A7A-5875EE60E13B}.Release|Any CPU.Build.0 = Release|Any CPU + {C3CDCFE1-7C6D-4122-9C0B-F82FAB30999E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3CDCFE1-7C6D-4122-9C0B-F82FAB30999E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C3CDCFE1-7C6D-4122-9C0B-F82FAB30999E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C3CDCFE1-7C6D-4122-9C0B-F82FAB30999E}.Release|Any CPU.Build.0 = Release|Any CPU + {AB913711-B99C-4D68-B9EF-6D66C437F97A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AB913711-B99C-4D68-B9EF-6D66C437F97A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AB913711-B99C-4D68-B9EF-6D66C437F97A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AB913711-B99C-4D68-B9EF-6D66C437F97A}.Release|Any CPU.Build.0 = Release|Any CPU + {668DAC0A-01C5-4DD0-ACF3-0D4E9485F449}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {668DAC0A-01C5-4DD0-ACF3-0D4E9485F449}.Debug|Any CPU.Build.0 = Debug|Any CPU + {668DAC0A-01C5-4DD0-ACF3-0D4E9485F449}.Release|Any CPU.ActiveCfg = Release|Any CPU + {668DAC0A-01C5-4DD0-ACF3-0D4E9485F449}.Release|Any CPU.Build.0 = Release|Any CPU + {9124A33F-1F0D-4788-8CD8-156AE083D304}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9124A33F-1F0D-4788-8CD8-156AE083D304}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9124A33F-1F0D-4788-8CD8-156AE083D304}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9124A33F-1F0D-4788-8CD8-156AE083D304}.Release|Any CPU.Build.0 = Release|Any CPU + {ACE8ABDC-0D05-4963-AFD8-CFF298A85A9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ACE8ABDC-0D05-4963-AFD8-CFF298A85A9C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ACE8ABDC-0D05-4963-AFD8-CFF298A85A9C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ACE8ABDC-0D05-4963-AFD8-CFF298A85A9C}.Release|Any CPU.Build.0 = Release|Any CPU + {C9595BDE-8D44-4EF8-8451-EBEEEE2E31D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9595BDE-8D44-4EF8-8451-EBEEEE2E31D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9595BDE-8D44-4EF8-8451-EBEEEE2E31D2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9595BDE-8D44-4EF8-8451-EBEEEE2E31D2}.Release|Any CPU.Build.0 = Release|Any CPU + {608C0926-91C6-4B0C-B6BF-4AE25688AB70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {608C0926-91C6-4B0C-B6BF-4AE25688AB70}.Debug|Any CPU.Build.0 = Debug|Any CPU + {608C0926-91C6-4B0C-B6BF-4AE25688AB70}.Release|Any CPU.ActiveCfg = Release|Any CPU + {608C0926-91C6-4B0C-B6BF-4AE25688AB70}.Release|Any CPU.Build.0 = Release|Any CPU + {EE26A5F9-9C69-470B-94C4-7F7DE42215B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EE26A5F9-9C69-470B-94C4-7F7DE42215B1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EE26A5F9-9C69-470B-94C4-7F7DE42215B1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EE26A5F9-9C69-470B-94C4-7F7DE42215B1}.Release|Any CPU.Build.0 = Release|Any CPU + {E962F366-B388-4EE4-B276-000F1B4B8052}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E962F366-B388-4EE4-B276-000F1B4B8052}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E962F366-B388-4EE4-B276-000F1B4B8052}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E962F366-B388-4EE4-B276-000F1B4B8052}.Release|Any CPU.Build.0 = Release|Any CPU + {C8EB51D4-B80E-4227-9DC6-6E6D088F24BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C8EB51D4-B80E-4227-9DC6-6E6D088F24BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C8EB51D4-B80E-4227-9DC6-6E6D088F24BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C8EB51D4-B80E-4227-9DC6-6E6D088F24BB}.Release|Any CPU.Build.0 = Release|Any CPU + {542E79A5-E2AE-4446-AFF6-17D55EDA286D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {542E79A5-E2AE-4446-AFF6-17D55EDA286D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {542E79A5-E2AE-4446-AFF6-17D55EDA286D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {542E79A5-E2AE-4446-AFF6-17D55EDA286D}.Release|Any CPU.Build.0 = Release|Any CPU + {4FFDDB39-D141-4EEA-ACC3-767C5BE4D955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4FFDDB39-D141-4EEA-ACC3-767C5BE4D955}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4FFDDB39-D141-4EEA-ACC3-767C5BE4D955}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4FFDDB39-D141-4EEA-ACC3-767C5BE4D955}.Release|Any CPU.Build.0 = Release|Any CPU + {C3596099-8F86-47F2-BA83-EA56E3BC76D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3596099-8F86-47F2-BA83-EA56E3BC76D0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C3596099-8F86-47F2-BA83-EA56E3BC76D0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C3596099-8F86-47F2-BA83-EA56E3BC76D0}.Release|Any CPU.Build.0 = Release|Any CPU + {46607273-7BE4-41A6-90E5-ACFC1479A9AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {46607273-7BE4-41A6-90E5-ACFC1479A9AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {46607273-7BE4-41A6-90E5-ACFC1479A9AC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {46607273-7BE4-41A6-90E5-ACFC1479A9AC}.Release|Any CPU.Build.0 = Release|Any CPU + {F1F3121A-C3D9-46DB-A69E-CF810CD8A362}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1F3121A-C3D9-46DB-A69E-CF810CD8A362}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1F3121A-C3D9-46DB-A69E-CF810CD8A362}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1F3121A-C3D9-46DB-A69E-CF810CD8A362}.Release|Any CPU.Build.0 = Release|Any CPU + {C0D360CD-3C06-45CC-A0B0-4A5AC0783320}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C0D360CD-3C06-45CC-A0B0-4A5AC0783320}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C0D360CD-3C06-45CC-A0B0-4A5AC0783320}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C0D360CD-3C06-45CC-A0B0-4A5AC0783320}.Release|Any CPU.Build.0 = Release|Any CPU + {027E7BEF-CE49-4672-93CD-9F3F4471B92A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {027E7BEF-CE49-4672-93CD-9F3F4471B92A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {027E7BEF-CE49-4672-93CD-9F3F4471B92A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {027E7BEF-CE49-4672-93CD-9F3F4471B92A}.Release|Any CPU.Build.0 = Release|Any CPU + {E85F79E9-98D3-4451-9CF9-163631DBB6AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E85F79E9-98D3-4451-9CF9-163631DBB6AF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E85F79E9-98D3-4451-9CF9-163631DBB6AF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E85F79E9-98D3-4451-9CF9-163631DBB6AF}.Release|Any CPU.Build.0 = Release|Any CPU + {31F0D7A5-6BDF-49BD-B2A7-3BB7879213BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {31F0D7A5-6BDF-49BD-B2A7-3BB7879213BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {31F0D7A5-6BDF-49BD-B2A7-3BB7879213BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {31F0D7A5-6BDF-49BD-B2A7-3BB7879213BB}.Release|Any CPU.Build.0 = Release|Any CPU + {8A4C8531-FC1F-4BE9-9625-B359984F0CEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8A4C8531-FC1F-4BE9-9625-B359984F0CEB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A4C8531-FC1F-4BE9-9625-B359984F0CEB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8A4C8531-FC1F-4BE9-9625-B359984F0CEB}.Release|Any CPU.Build.0 = Release|Any CPU + {78D5B5FF-0681-49E1-9752-B4AB395A47AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78D5B5FF-0681-49E1-9752-B4AB395A47AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78D5B5FF-0681-49E1-9752-B4AB395A47AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78D5B5FF-0681-49E1-9752-B4AB395A47AB}.Release|Any CPU.Build.0 = Release|Any CPU + {9AA9A703-8243-4EAE-B022-EE2FF4027A85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9AA9A703-8243-4EAE-B022-EE2FF4027A85}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9AA9A703-8243-4EAE-B022-EE2FF4027A85}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9AA9A703-8243-4EAE-B022-EE2FF4027A85}.Release|Any CPU.Build.0 = Release|Any CPU + {AA3C2474-5FFC-45B8-8C23-CCE0E2DBD851}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA3C2474-5FFC-45B8-8C23-CCE0E2DBD851}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA3C2474-5FFC-45B8-8C23-CCE0E2DBD851}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA3C2474-5FFC-45B8-8C23-CCE0E2DBD851}.Release|Any CPU.Build.0 = Release|Any CPU + {D456B58D-3801-4B76-BE69-82A4FDB5A993}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D456B58D-3801-4B76-BE69-82A4FDB5A993}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D456B58D-3801-4B76-BE69-82A4FDB5A993}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D456B58D-3801-4B76-BE69-82A4FDB5A993}.Release|Any CPU.Build.0 = Release|Any CPU + {F34542A8-0AAA-46C7-98DE-0DF72E9A7E2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F34542A8-0AAA-46C7-98DE-0DF72E9A7E2F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F34542A8-0AAA-46C7-98DE-0DF72E9A7E2F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F34542A8-0AAA-46C7-98DE-0DF72E9A7E2F}.Release|Any CPU.Build.0 = Release|Any CPU + {149CE343-79C3-4AE2-B61E-51845872C151}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {149CE343-79C3-4AE2-B61E-51845872C151}.Debug|Any CPU.Build.0 = Debug|Any CPU + {149CE343-79C3-4AE2-B61E-51845872C151}.Release|Any CPU.ActiveCfg = Release|Any CPU + {149CE343-79C3-4AE2-B61E-51845872C151}.Release|Any CPU.Build.0 = Release|Any CPU + {AA330FB4-E2E1-4570-9ECD-65F8100E90D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA330FB4-E2E1-4570-9ECD-65F8100E90D5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA330FB4-E2E1-4570-9ECD-65F8100E90D5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA330FB4-E2E1-4570-9ECD-65F8100E90D5}.Release|Any CPU.Build.0 = Release|Any CPU + {5BE6607E-0B8C-441E-B80E-14236D377D08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5BE6607E-0B8C-441E-B80E-14236D377D08}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5BE6607E-0B8C-441E-B80E-14236D377D08}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5BE6607E-0B8C-441E-B80E-14236D377D08}.Release|Any CPU.Build.0 = Release|Any CPU + {D4526E9D-E808-4922-8841-96A03BB14650}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D4526E9D-E808-4922-8841-96A03BB14650}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D4526E9D-E808-4922-8841-96A03BB14650}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D4526E9D-E808-4922-8841-96A03BB14650}.Release|Any CPU.Build.0 = Release|Any CPU + {9737100B-A415-4E7D-ABD1-0D2B89981F16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9737100B-A415-4E7D-ABD1-0D2B89981F16}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9737100B-A415-4E7D-ABD1-0D2B89981F16}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9737100B-A415-4E7D-ABD1-0D2B89981F16}.Release|Any CPU.Build.0 = Release|Any CPU + {CD0F3063-D5AC-4B78-BC99-729D6FDD7478}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CD0F3063-D5AC-4B78-BC99-729D6FDD7478}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD0F3063-D5AC-4B78-BC99-729D6FDD7478}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CD0F3063-D5AC-4B78-BC99-729D6FDD7478}.Release|Any CPU.Build.0 = Release|Any CPU + {EB3EC543-CB41-4E1A-9500-9AEF5C3BC0B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EB3EC543-CB41-4E1A-9500-9AEF5C3BC0B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EB3EC543-CB41-4E1A-9500-9AEF5C3BC0B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EB3EC543-CB41-4E1A-9500-9AEF5C3BC0B7}.Release|Any CPU.Build.0 = Release|Any CPU + {ACE28A2C-EB6B-4244-B493-DD99867CB90D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ACE28A2C-EB6B-4244-B493-DD99867CB90D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ACE28A2C-EB6B-4244-B493-DD99867CB90D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ACE28A2C-EB6B-4244-B493-DD99867CB90D}.Release|Any CPU.Build.0 = Release|Any CPU + {BFE4216D-7D2E-416A-834D-43AA1C639524}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BFE4216D-7D2E-416A-834D-43AA1C639524}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BFE4216D-7D2E-416A-834D-43AA1C639524}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BFE4216D-7D2E-416A-834D-43AA1C639524}.Release|Any CPU.Build.0 = Release|Any CPU + {69B61D89-B578-4F07-9DD5-7204D4F682BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {69B61D89-B578-4F07-9DD5-7204D4F682BD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {69B61D89-B578-4F07-9DD5-7204D4F682BD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {69B61D89-B578-4F07-9DD5-7204D4F682BD}.Release|Any CPU.Build.0 = Release|Any CPU + {9B7F8691-E337-4CA4-9E24-46EF69803734}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9B7F8691-E337-4CA4-9E24-46EF69803734}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9B7F8691-E337-4CA4-9E24-46EF69803734}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9B7F8691-E337-4CA4-9E24-46EF69803734}.Release|Any CPU.Build.0 = Release|Any CPU + {A3DCBFE2-2D22-4464-9F15-3D71EDBB5F4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A3DCBFE2-2D22-4464-9F15-3D71EDBB5F4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A3DCBFE2-2D22-4464-9F15-3D71EDBB5F4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A3DCBFE2-2D22-4464-9F15-3D71EDBB5F4D}.Release|Any CPU.Build.0 = Release|Any CPU + {AE6951C4-54B0-4EC4-8E52-8BF73EF1766C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE6951C4-54B0-4EC4-8E52-8BF73EF1766C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE6951C4-54B0-4EC4-8E52-8BF73EF1766C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AE6951C4-54B0-4EC4-8E52-8BF73EF1766C}.Release|Any CPU.Build.0 = Release|Any CPU + {4E053D6F-23F8-4262-8331-7852E8788FB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4E053D6F-23F8-4262-8331-7852E8788FB2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4E053D6F-23F8-4262-8331-7852E8788FB2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4E053D6F-23F8-4262-8331-7852E8788FB2}.Release|Any CPU.Build.0 = Release|Any CPU + {768CA07B-FAC9-4233-BB4A-E522E5CED0FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {768CA07B-FAC9-4233-BB4A-E522E5CED0FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {768CA07B-FAC9-4233-BB4A-E522E5CED0FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {768CA07B-FAC9-4233-BB4A-E522E5CED0FA}.Release|Any CPU.Build.0 = Release|Any CPU + {B2FBBA96-D2CA-4051-A9FF-36D4FD2FE1BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B2FBBA96-D2CA-4051-A9FF-36D4FD2FE1BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B2FBBA96-D2CA-4051-A9FF-36D4FD2FE1BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B2FBBA96-D2CA-4051-A9FF-36D4FD2FE1BC}.Release|Any CPU.Build.0 = Release|Any CPU + {E927DC0E-7736-47FF-B661-96534265380B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E927DC0E-7736-47FF-B661-96534265380B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E927DC0E-7736-47FF-B661-96534265380B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E927DC0E-7736-47FF-B661-96534265380B}.Release|Any CPU.Build.0 = Release|Any CPU + {56F7519C-2D4F-4939-B7DB-295EC0BDBF6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {56F7519C-2D4F-4939-B7DB-295EC0BDBF6C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {56F7519C-2D4F-4939-B7DB-295EC0BDBF6C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {56F7519C-2D4F-4939-B7DB-295EC0BDBF6C}.Release|Any CPU.Build.0 = Release|Any CPU + {730EDE55-501D-4A60-B7E8-F6ADC743159C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {730EDE55-501D-4A60-B7E8-F6ADC743159C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {730EDE55-501D-4A60-B7E8-F6ADC743159C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {730EDE55-501D-4A60-B7E8-F6ADC743159C}.Release|Any CPU.Build.0 = Release|Any CPU + {E6B73F3E-92DD-4737-8FF8-A78B97CB387C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E6B73F3E-92DD-4737-8FF8-A78B97CB387C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E6B73F3E-92DD-4737-8FF8-A78B97CB387C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E6B73F3E-92DD-4737-8FF8-A78B97CB387C}.Release|Any CPU.Build.0 = Release|Any CPU + {3378E01F-43A7-4F27-8944-2FF46C35C4F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3378E01F-43A7-4F27-8944-2FF46C35C4F0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3378E01F-43A7-4F27-8944-2FF46C35C4F0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3378E01F-43A7-4F27-8944-2FF46C35C4F0}.Release|Any CPU.Build.0 = Release|Any CPU + {2107BF8F-95A9-4A7A-9CB0-F676E59A887A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2107BF8F-95A9-4A7A-9CB0-F676E59A887A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2107BF8F-95A9-4A7A-9CB0-F676E59A887A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2107BF8F-95A9-4A7A-9CB0-F676E59A887A}.Release|Any CPU.Build.0 = Release|Any CPU + {90FB198E-A723-4127-B38F-6F3FE2180AED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {90FB198E-A723-4127-B38F-6F3FE2180AED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {90FB198E-A723-4127-B38F-6F3FE2180AED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {90FB198E-A723-4127-B38F-6F3FE2180AED}.Release|Any CPU.Build.0 = Release|Any CPU + {0A6CE006-5DFA-4478-8ADC-3CA0F16CACBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A6CE006-5DFA-4478-8ADC-3CA0F16CACBA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A6CE006-5DFA-4478-8ADC-3CA0F16CACBA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A6CE006-5DFA-4478-8ADC-3CA0F16CACBA}.Release|Any CPU.Build.0 = Release|Any CPU + {A450AABD-15BC-433E-B9B9-9D91BF5F4BFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A450AABD-15BC-433E-B9B9-9D91BF5F4BFA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A450AABD-15BC-433E-B9B9-9D91BF5F4BFA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A450AABD-15BC-433E-B9B9-9D91BF5F4BFA}.Release|Any CPU.Build.0 = Release|Any CPU + {D32F4616-1733-4491-81C6-D77F975DF171}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D32F4616-1733-4491-81C6-D77F975DF171}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D32F4616-1733-4491-81C6-D77F975DF171}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D32F4616-1733-4491-81C6-D77F975DF171}.Release|Any CPU.Build.0 = Release|Any CPU + {CAD89597-A781-491C-9B95-0C2D6DA3C70B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CAD89597-A781-491C-9B95-0C2D6DA3C70B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CAD89597-A781-491C-9B95-0C2D6DA3C70B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CAD89597-A781-491C-9B95-0C2D6DA3C70B}.Release|Any CPU.Build.0 = Release|Any CPU + {C203E2FB-EEB4-4496-9BC2-2951920CDD56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C203E2FB-EEB4-4496-9BC2-2951920CDD56}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C203E2FB-EEB4-4496-9BC2-2951920CDD56}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C203E2FB-EEB4-4496-9BC2-2951920CDD56}.Release|Any CPU.Build.0 = Release|Any CPU + {FDD50EA7-65F8-459D-9266-51E229757B78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FDD50EA7-65F8-459D-9266-51E229757B78}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FDD50EA7-65F8-459D-9266-51E229757B78}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FDD50EA7-65F8-459D-9266-51E229757B78}.Release|Any CPU.Build.0 = Release|Any CPU + {78912F30-35BD-411C-8CA9-49A2A3726745}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78912F30-35BD-411C-8CA9-49A2A3726745}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78912F30-35BD-411C-8CA9-49A2A3726745}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78912F30-35BD-411C-8CA9-49A2A3726745}.Release|Any CPU.Build.0 = Release|Any CPU + {885DA3AA-3B3C-43EC-823D-A0B73D359B6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {885DA3AA-3B3C-43EC-823D-A0B73D359B6A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {885DA3AA-3B3C-43EC-823D-A0B73D359B6A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {885DA3AA-3B3C-43EC-823D-A0B73D359B6A}.Release|Any CPU.Build.0 = Release|Any CPU + {A3011C15-258D-4A62-B01B-91EFEEA9C936}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A3011C15-258D-4A62-B01B-91EFEEA9C936}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A3011C15-258D-4A62-B01B-91EFEEA9C936}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A3011C15-258D-4A62-B01B-91EFEEA9C936}.Release|Any CPU.Build.0 = Release|Any CPU + {8FCFD429-4E9C-4B5D-B3C5-CF398BD0F3F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8FCFD429-4E9C-4B5D-B3C5-CF398BD0F3F2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8FCFD429-4E9C-4B5D-B3C5-CF398BD0F3F2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8FCFD429-4E9C-4B5D-B3C5-CF398BD0F3F2}.Release|Any CPU.Build.0 = Release|Any CPU + {60AE567A-7D98-47A8-BBA3-74DC52A32BC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {60AE567A-7D98-47A8-BBA3-74DC52A32BC8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {60AE567A-7D98-47A8-BBA3-74DC52A32BC8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {60AE567A-7D98-47A8-BBA3-74DC52A32BC8}.Release|Any CPU.Build.0 = Release|Any CPU + {8E106150-257D-45F1-84BD-FC7AAE39FF5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8E106150-257D-45F1-84BD-FC7AAE39FF5B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E106150-257D-45F1-84BD-FC7AAE39FF5B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8E106150-257D-45F1-84BD-FC7AAE39FF5B}.Release|Any CPU.Build.0 = Release|Any CPU + {C89BEC2D-AC6B-4836-8D04-80B00362656A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C89BEC2D-AC6B-4836-8D04-80B00362656A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C89BEC2D-AC6B-4836-8D04-80B00362656A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C89BEC2D-AC6B-4836-8D04-80B00362656A}.Release|Any CPU.Build.0 = Release|Any CPU + {5DDDBF07-3D23-47EB-9816-A833D0B64D68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5DDDBF07-3D23-47EB-9816-A833D0B64D68}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5DDDBF07-3D23-47EB-9816-A833D0B64D68}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5DDDBF07-3D23-47EB-9816-A833D0B64D68}.Release|Any CPU.Build.0 = Release|Any CPU + {6357636C-FF16-4E60-A20E-5311B8375DBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6357636C-FF16-4E60-A20E-5311B8375DBE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6357636C-FF16-4E60-A20E-5311B8375DBE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6357636C-FF16-4E60-A20E-5311B8375DBE}.Release|Any CPU.Build.0 = Release|Any CPU + {1CBF1FCB-88B0-44E3-83B3-C3AA73AAE61C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1CBF1FCB-88B0-44E3-83B3-C3AA73AAE61C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1CBF1FCB-88B0-44E3-83B3-C3AA73AAE61C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1CBF1FCB-88B0-44E3-83B3-C3AA73AAE61C}.Release|Any CPU.Build.0 = Release|Any CPU + {0A4585EC-8C47-4A26-9A18-1D69980D1E2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A4585EC-8C47-4A26-9A18-1D69980D1E2B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A4585EC-8C47-4A26-9A18-1D69980D1E2B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A4585EC-8C47-4A26-9A18-1D69980D1E2B}.Release|Any CPU.Build.0 = Release|Any CPU + {C1093981-1075-447D-8BFA-EDB9D10FCB64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1093981-1075-447D-8BFA-EDB9D10FCB64}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C1093981-1075-447D-8BFA-EDB9D10FCB64}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C1093981-1075-447D-8BFA-EDB9D10FCB64}.Release|Any CPU.Build.0 = Release|Any CPU + {2E1EE3FA-1599-4322-B33D-8B598924BB88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2E1EE3FA-1599-4322-B33D-8B598924BB88}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2E1EE3FA-1599-4322-B33D-8B598924BB88}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E1EE3FA-1599-4322-B33D-8B598924BB88}.Release|Any CPU.Build.0 = Release|Any CPU + {938BC277-52D7-4EFC-BECD-8D1901EAD397}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {938BC277-52D7-4EFC-BECD-8D1901EAD397}.Debug|Any CPU.Build.0 = Debug|Any CPU + {938BC277-52D7-4EFC-BECD-8D1901EAD397}.Release|Any CPU.ActiveCfg = Release|Any CPU + {938BC277-52D7-4EFC-BECD-8D1901EAD397}.Release|Any CPU.Build.0 = Release|Any CPU + {5F478978-6103-4BBD-B754-3146DC02F776}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5F478978-6103-4BBD-B754-3146DC02F776}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5F478978-6103-4BBD-B754-3146DC02F776}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5F478978-6103-4BBD-B754-3146DC02F776}.Release|Any CPU.Build.0 = Release|Any CPU + {F6F8B9FF-BAD2-4378-8586-1A3E60375557}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F6F8B9FF-BAD2-4378-8586-1A3E60375557}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F6F8B9FF-BAD2-4378-8586-1A3E60375557}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F6F8B9FF-BAD2-4378-8586-1A3E60375557}.Release|Any CPU.Build.0 = Release|Any CPU + {6C7D24B6-B9B1-4F96-A4FF-A9994F6B1801}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6C7D24B6-B9B1-4F96-A4FF-A9994F6B1801}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C7D24B6-B9B1-4F96-A4FF-A9994F6B1801}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6C7D24B6-B9B1-4F96-A4FF-A9994F6B1801}.Release|Any CPU.Build.0 = Release|Any CPU + {477C0E7B-8542-4B12-AF5D-D7220F8908D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {477C0E7B-8542-4B12-AF5D-D7220F8908D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {477C0E7B-8542-4B12-AF5D-D7220F8908D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {477C0E7B-8542-4B12-AF5D-D7220F8908D6}.Release|Any CPU.Build.0 = Release|Any CPU + {780E2867-4EC4-420C-A116-959826DE2015}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {780E2867-4EC4-420C-A116-959826DE2015}.Debug|Any CPU.Build.0 = Debug|Any CPU + {780E2867-4EC4-420C-A116-959826DE2015}.Release|Any CPU.ActiveCfg = Release|Any CPU + {780E2867-4EC4-420C-A116-959826DE2015}.Release|Any CPU.Build.0 = Release|Any CPU + {4BF5287A-52FF-4DF1-9C23-70F0EC0F620B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4BF5287A-52FF-4DF1-9C23-70F0EC0F620B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4BF5287A-52FF-4DF1-9C23-70F0EC0F620B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4BF5287A-52FF-4DF1-9C23-70F0EC0F620B}.Release|Any CPU.Build.0 = Release|Any CPU + {1C840A7E-8AC1-47F9-AD84-9521D91D3594}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1C840A7E-8AC1-47F9-AD84-9521D91D3594}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1C840A7E-8AC1-47F9-AD84-9521D91D3594}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1C840A7E-8AC1-47F9-AD84-9521D91D3594}.Release|Any CPU.Build.0 = Release|Any CPU + {AF7FF555-8B13-4C9C-9C1E-1685449E0B50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AF7FF555-8B13-4C9C-9C1E-1685449E0B50}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF7FF555-8B13-4C9C-9C1E-1685449E0B50}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AF7FF555-8B13-4C9C-9C1E-1685449E0B50}.Release|Any CPU.Build.0 = Release|Any CPU + {2D2C9F96-471C-4BE6-BB6D-BDA7DEE8F985}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2D2C9F96-471C-4BE6-BB6D-BDA7DEE8F985}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2D2C9F96-471C-4BE6-BB6D-BDA7DEE8F985}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2D2C9F96-471C-4BE6-BB6D-BDA7DEE8F985}.Release|Any CPU.Build.0 = Release|Any CPU + {4B334357-EFF1-4C7E-871D-421D469ED12E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B334357-EFF1-4C7E-871D-421D469ED12E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B334357-EFF1-4C7E-871D-421D469ED12E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B334357-EFF1-4C7E-871D-421D469ED12E}.Release|Any CPU.Build.0 = Release|Any CPU + {78595B16-7D12-44FB-AD7F-8822979E83D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78595B16-7D12-44FB-AD7F-8822979E83D9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78595B16-7D12-44FB-AD7F-8822979E83D9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78595B16-7D12-44FB-AD7F-8822979E83D9}.Release|Any CPU.Build.0 = Release|Any CPU + {B5B0A6BF-1386-4749-B5CF-EF0C7200E661}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5B0A6BF-1386-4749-B5CF-EF0C7200E661}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5B0A6BF-1386-4749-B5CF-EF0C7200E661}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5B0A6BF-1386-4749-B5CF-EF0C7200E661}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0A133EE0-88EE-4188-852D-959733E043CA} + EndGlobalSection +EndGlobal diff --git a/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/08_Task Home 1 - Среднее арифметическое двух чисел.csproj b/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/08_Task Home 1 - Среднее арифметическое двух чисел.csproj new file mode 100644 index 0000000..ffa894d --- /dev/null +++ b/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/08_Task Home 1 - Среднее арифметическое двух чисел.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {F55F7A32-FC19-47A6-A9C1-07C5FEB2C394} + Exe + Task_Home_1___Среднее_арифметическое_двух_чисел + Task Home 1 - Среднее арифметическое двух чисел + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/App.config b/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/Program.cs b/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/Program.cs new file mode 100644 index 0000000..ac79d9b --- /dev/null +++ b/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/Program.cs @@ -0,0 +1,28 @@ +using System; + +/* + * 1. Напишите программу, вычисляющую среднее арифметическое двух чисел. + */ +class Program +{ + static void Main() + { + double firstValue, secondValue, result_arifm; + + Console.WriteLine("Введите число 1"); + + bool num_1 = double.TryParse(Console.ReadLine(), out firstValue); + + Console.WriteLine("Введите число 2"); + + bool num_2 = double.TryParse(Console.ReadLine(), out secondValue); + + result_arifm = (firstValue + secondValue) / 2; + + Console.WriteLine((num_1 && num_2) ? "Среднее арифметическое двух чисел: " + result_arifm : + "Строки содержат неверные символы!" + + Environment.NewLine + + "Среднее арифметическое двух чисел: " + result_arifm); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/Properties/AssemblyInfo.cs b/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..141c70a --- /dev/null +++ b/LessonsAndTasks/Task Home 1 - Среднее арифметическое двух чисел/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Task Home 1 - Среднее арифметическое двух чисел")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Task Home 1 - Среднее арифметическое двух чисел")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("f55f7a32-fc19-47a6-a9c1-07c5feb2c394")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и сумму/Program.cs b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и сумму/Program.cs new file mode 100644 index 0000000..f95724a --- /dev/null +++ b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и сумму/Program.cs @@ -0,0 +1,38 @@ +using System; + + +/* + * 2. Введите три числа и выведите на экран значение суммы и произведения этих чисел. + */ + +namespace Task_Home_2___Введите_три_числа_и_выведите_их_произведение_и_сумму +{ + class Program + { + static void Main(string[] args) + { + //#2 + int g1, g2, g3, res_sum, res_multy; + // 1 ошибка - названия переменных g1 g2 g3 на firstValue secondValue thirdValue + + Console.WriteLine("Введите число 1: "); + + int.TryParse(Console.ReadLine(), out g1); + + Console.WriteLine("Введите число 2: "); + + int.TryParse(Console.ReadLine(), out g2); + + Console.WriteLine("Введите число 3: "); + + int.TryParse(Console.ReadLine(), out g3); + + res_sum = g1 + g2 + g3; + res_multy = g1 * g2 * g3; + + Console.WriteLine("Результат суммы чисел: " + res_sum); + + Console.WriteLine("Результат умножения чисел: " + res_multy); + } + } +} diff --git a/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и сумму/Task Home 2 - Введите три числа и выведите их произведение и сумму.csproj b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и сумму/Task Home 2 - Введите три числа и выведите их произведение и сумму.csproj new file mode 100644 index 0000000..15dda50 --- /dev/null +++ b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и сумму/Task Home 2 - Введите три числа и выведите их произведение и сумму.csproj @@ -0,0 +1,9 @@ + + + + Exe + netcoreapp1.1 + Task_Home_2___Введите_три_числа_и_выведите_их_произведение_и_сумму + + + diff --git a/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/08_Task Home 2 - Введите три числа и выведите их произведение и суммы.csproj b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/08_Task Home 2 - Введите три числа и выведите их произведение и суммы.csproj new file mode 100644 index 0000000..f4a7140 --- /dev/null +++ b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/08_Task Home 2 - Введите три числа и выведите их произведение и суммы.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {DA90C9B8-A37B-41F1-98E1-25EF68A3A3CC} + Exe + Task_Home_2___Введите_три_числа_и_выведите_их_произведение_и_суммы + Task Home 2 - Введите три числа и выведите их произведение и суммы + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/App.config b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/Program.cs b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/Program.cs new file mode 100644 index 0000000..64abc4b --- /dev/null +++ b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/Program.cs @@ -0,0 +1,31 @@ +using System; + +/* + * 2. Введите три числа и выведите на экран значение суммы и произведения этих чисел. + */ +class Program +{ + static void Main() + { + int firstValue, secondValue, thirdValue, res_sum, res_multy; + + Console.WriteLine("Введите число 1: "); + + int.TryParse(Console.ReadLine(), out firstValue); + + Console.WriteLine("Введите число 2: "); + + int.TryParse(Console.ReadLine(), out secondValue); + + Console.WriteLine("Введите число 3: "); + + int.TryParse(Console.ReadLine(), out thirdValue); + + res_sum = firstValue + secondValue + thirdValue; + res_multy = firstValue * secondValue * thirdValue; + + Console.WriteLine("Результат суммы чисел: " + res_sum); + Console.WriteLine("Результат умножения чисел: " + res_multy); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/Properties/AssemblyInfo.cs b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..01cf6f6 --- /dev/null +++ b/LessonsAndTasks/Task Home 2 - Введите три числа и выведите их произведение и суммы/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Task Home 2 - Введите три числа и выведите их произведение и суммы")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Task Home 2 - Введите три числа и выведите их произведение и суммы")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("da90c9b8-a37b-41f1-98e1-25ef68a3a3cc")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Task Home 3 - Конвертер валют/Program.cs b/LessonsAndTasks/Task Home 3 - Конвертер валют/Program.cs new file mode 100644 index 0000000..3f48747 --- /dev/null +++ b/LessonsAndTasks/Task Home 3 - Конвертер валют/Program.cs @@ -0,0 +1,28 @@ +using System; + + +/* + * 3. Напишите простой конвертер валют + * (без возможности динамического выбора валюты пользователем). + * Валюты заданы хардкодом и не изменяются. Тип валют на выбор программиста. + */ + +namespace Task_Home_3___Конвертер_валют +{ + class Program + { + static void Main(string[] args) + { + //#3 + double ruble, dollar; + + Console.WriteLine("Введите количество рублей: "); + + double.TryParse(Console.ReadLine(), out ruble); + + dollar = ruble * 0.014; + + Console.WriteLine("Долларов: " + dollar); + } + } +} diff --git a/LessonsAndTasks/Task Home 3 - Конвертер валют/Task Home 3 - Конвертер валют.csproj b/LessonsAndTasks/Task Home 3 - Конвертер валют/Task Home 3 - Конвертер валют.csproj new file mode 100644 index 0000000..5af9667 --- /dev/null +++ b/LessonsAndTasks/Task Home 3 - Конвертер валют/Task Home 3 - Конвертер валют.csproj @@ -0,0 +1,9 @@ + + + + Exe + netcoreapp1.1 + Task_Home_3___Конвертер_валют + + + diff --git a/LessonsAndTasks/Task Home 3 - Конвертер валюты/08_Task Home 3 - Конвертер валюты.csproj b/LessonsAndTasks/Task Home 3 - Конвертер валюты/08_Task Home 3 - Конвертер валюты.csproj new file mode 100644 index 0000000..4dcda96 --- /dev/null +++ b/LessonsAndTasks/Task Home 3 - Конвертер валюты/08_Task Home 3 - Конвертер валюты.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {45F5A326-539B-4E99-9A7A-5875EE60E13B} + Exe + Task_Home_3___Конвертер_валюты + Task Home 3 - Конвертер валюты + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 3 - Конвертер валюты/App.config b/LessonsAndTasks/Task Home 3 - Конвертер валюты/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Task Home 3 - Конвертер валюты/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 3 - Конвертер валюты/Program.cs b/LessonsAndTasks/Task Home 3 - Конвертер валюты/Program.cs new file mode 100644 index 0000000..012f775 --- /dev/null +++ b/LessonsAndTasks/Task Home 3 - Конвертер валюты/Program.cs @@ -0,0 +1,23 @@ +using System; + +/* + * 3. Напишите простой конвертер валют + * (без возможности динамического выбора валюты пользователем). + * Валюты заданы хардкодом и не изменяются. Тип валют на выбор программиста. + */ +class Program +{ + static void Main() + { + double ruble, dollar; + + Console.WriteLine("Введите количество рублей: "); + + double.TryParse(Console.ReadLine(), out ruble); + + dollar = ruble * 0.014; + + Console.WriteLine("Долларов: " + dollar); + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 3 - Конвертер валюты/Properties/AssemblyInfo.cs b/LessonsAndTasks/Task Home 3 - Конвертер валюты/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2ddb958 --- /dev/null +++ b/LessonsAndTasks/Task Home 3 - Конвертер валюты/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Task Home 3 - Конвертер валюты")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Task Home 3 - Конвертер валюты")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("45f5a326-539b-4e99-9a7a-5875ee60e13b")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/App.config b/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Program.cs b/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Program.cs new file mode 100644 index 0000000..1eb7606 --- /dev/null +++ b/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Program.cs @@ -0,0 +1,21 @@ +using System; + +class Program +{ + static void Main() + { + int a; + + a = int.Parse(Console.ReadLine()); + + if (a % 2 == 1) + { + Console.WriteLine("Не чётное"); + } + else + { + Console.WriteLine("Чётное"); + } + Console.ReadKey(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Properties/AssemblyInfo.cs b/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..73866d1 --- /dev/null +++ b/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные с этой сборкой. +[assembly: AssemblyTitle("Task Home 4 - Проверка числа на чётность")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Task Home 4 - Проверка числа на чётность")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM +[assembly: Guid("9124a33f-1f0d-4788-8cd8-156ae083d304")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Task Home 4 - Проверка числа на чётность.csproj b/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Task Home 4 - Проверка числа на чётность.csproj new file mode 100644 index 0000000..930101f --- /dev/null +++ b/LessonsAndTasks/Task Home 4 - Проверка числа на чётность/Task Home 4 - Проверка числа на чётность.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {9124A33F-1F0D-4788-8CD8-156AE083D304} + Exe + Task_Home_4___Проверка_числа_на_чётность + Task Home 4 - Проверка числа на чётность + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/App.config b/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Program.cs b/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Program.cs new file mode 100644 index 0000000..faf7e36 --- /dev/null +++ b/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Program.cs @@ -0,0 +1,97 @@ +using System; + +/* + * пишем калькулятор C# + */ +class Program +{ + static void Main() + { + while (true) + { + Console.Clear(); + double a, b, result; + string action; + try + { + //if else + Console.WriteLine(value: "Введите первое число"); + a = double.Parse(Console.ReadLine()); + Console.WriteLine(value: "Введите первое число"); + b = double.Parse(Console.ReadLine()); + Console.WriteLine(value: "Действие + - % * /"); + action = Console.ReadLine(); + result = 0; + + if (action == "+") + { + result = a + b; + } + else if (action == "-") + { + result = a - b; + } + else if (action == "%") + { + result = a % b; + } + else if (action == "*") + { + result = a * b; + } + else if (action == "/") + { + if (b == 0) + result = 0; + else + result = a / b; + } + else + { + Console.WriteLine(Environment.NewLine + "Я не знаю!"); + } + Console.WriteLine("Результат if else: " + result); + + //switch + Console.WriteLine(Environment.NewLine + "Введите действие + - * % /" + Environment.NewLine); + + ConsoleKey consoleKey = Console.ReadKey().Key; + switch (consoleKey) + { + case ConsoleKey.Add: + case ConsoleKey.OemPlus: + result = a + b; + break; + case ConsoleKey.Subtract: + case ConsoleKey.OemMinus: + result = a - b; + break; + case ConsoleKey.Multiply: + result = a * b; + break; + case ConsoleKey.Divide: + if (b == 0) + result = 0; + else + result = a / b; + break; + case ConsoleKey.D5: + result = a % b; + break; + default: + Console.WriteLine(Environment.NewLine + "Я не знаю!"); + break; + } + + Console.WriteLine(Environment.NewLine + "Результат switch: " + result); + } + catch (Exception) + { + Console.WriteLine("Ошибка!"); + continue; + } + + Console.ReadLine(); + } + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Properties/AssemblyInfo.cs b/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e89c1e7 --- /dev/null +++ b/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные с этой сборкой. +[assembly: AssemblyTitle("Task Home 5 - Калькулятор Switch и на If Else")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Task Home 5 - Калькулятор Switch и на If Else")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM +[assembly: Guid("c9595bde-8d44-4ef8-8451-ebeeee2e31d2")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Task Home 5 - Калькулятор Switch и на If Else.csproj b/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Task Home 5 - Калькулятор Switch и на If Else.csproj new file mode 100644 index 0000000..f9c35fd --- /dev/null +++ b/LessonsAndTasks/Task Home 5 - Калькулятор Switch и на If Else/Task Home 5 - Калькулятор Switch и на If Else.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {C9595BDE-8D44-4EF8-8451-EBEEEE2E31D2} + Exe + Task_Home_5___Калькулятор_Switch_и_на_If_Else + Task Home 5 - Калькулятор Switch и на If Else + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/App.config b/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Program.cs b/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Program.cs new file mode 100644 index 0000000..d4c0925 --- /dev/null +++ b/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Program.cs @@ -0,0 +1,93 @@ +using System; + +/* + * Треугольники в консоли + */ +class Program +{ + static void Main() + { + Console.Write("Ввелите высоту треугольника: "); + int height = int.Parse(Console.ReadLine()); + + for (int r = 0; r < height; r++) + { + for (int rr = 0; rr <= r; rr++) + { + Console.Write("#"); + } + + Console.WriteLine(); + + } + + Console.WriteLine(); + Console.WriteLine(); + + for (int r = height; r > 0; r--) + { + for (int rr = 0; rr < r; rr++) + { + Console.Write("#"); + } + + Console.WriteLine(); + } + + Console.WriteLine(); + Console.WriteLine(); + + for (int r = height; r > 0; r--) + { + for (int rr = 1; rr < r; rr++) + { + Console.Write(" "); + } + + for (int rrr = 0; rrr < (height + 1) - r; rrr++) + { + Console.Write("#"); + } + + Console.WriteLine(); + } + + Console.WriteLine(); + Console.WriteLine(); + //Cheat + Console.ReadLine(); + Console.Clear(); + + for (int r = 1; r <= height; r++) + { + Console.SetCursorPosition(height - r, r - 1); + + for (int rrr = 0; rrr < r; rrr++) + { + Console.Write("#"); + } + } + + Console.WriteLine(); + Console.WriteLine(); + Console.ReadLine(); + Console.Clear(); + + for (int r = 0; r < height; r++) + { + for (int rr = 0; rr < r; rr++) + { + Console.Write(" "); + } + + for (int rrr = 0; rrr < height - r; rrr++) + { + Console.Write("#"); + } + + Console.WriteLine(); + } + + Console.ReadLine(); + } +} \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Properties/AssemblyInfo.cs b/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7af2b50 --- /dev/null +++ b/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Task Home 6 - Как нарисовать треугольник в консоли")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Task Home 6 - Как нарисовать треугольник в консоли")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("4ffddb39-d141-4eea-acc3-767c5be4d955")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Task Home 6 - Как нарисовать треугольник в консоли.csproj b/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Task Home 6 - Как нарисовать треугольник в консоли.csproj new file mode 100644 index 0000000..0506f41 --- /dev/null +++ b/LessonsAndTasks/Task Home 6 - Как нарисовать треугольник в консоли/Task Home 6 - Как нарисовать треугольник в консоли.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {4FFDDB39-D141-4EEA-ACC3-767C5BE4D955} + Exe + Task_Home_6___Как_нарисовать_треугольник_в_консоли + Task Home 6 - Как нарисовать треугольник в консоли + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/App.config b/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Program.cs b/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Program.cs new file mode 100644 index 0000000..6358f7b --- /dev/null +++ b/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Program.cs @@ -0,0 +1,38 @@ +using System; + +/* + * Сумма чётных и нечётных чисел в диапазоне + */ + +namespace Task_Home_6___Сумма_чётных_и_нечётных_чисел_в_диапазоне +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine("Введите число"); + int num = int.Parse(Console.ReadLine()); + + int count = 0, num_even = 0, num_odd = 0; + + //чётные + double num_even_progressia = 0; + double num_odd_progressia = 0; + num_even_progressia = (1 + (num / 2)) * num / 2; + num_odd_progressia = (0.5 + ((double)(num - 1) / 2)) * num / 2; + Console.WriteLine($"Чётных прогрессия - {num_even_progressia}, Нечётных прогрессия - {num_odd_progressia}"); + + while(count < num) + { + count++; + if (count % 2 != 1) //Чётное + num_even += count; + else + num_odd += count; + } + Console.WriteLine($"Чётных - {num_even}, Нечётных - {num_odd}"); + + Console.ReadLine(); + } + } +} diff --git a/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Properties/AssemblyInfo.cs b/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..dabd735 --- /dev/null +++ b/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Task Home 6 - Сумма чётных и нечётных чисел в диапазоне")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Task Home 6 - Сумма чётных и нечётных чисел в диапазоне")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("8b19b5e5-ce0a-4bfa-80f2-2da63f6aeb7c")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне.csproj b/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне.csproj new file mode 100644 index 0000000..ddd6bb8 --- /dev/null +++ b/LessonsAndTasks/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне/Task Home 6 - Сумма чётных и нечётных чисел в диапазоне.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {8B19B5E5-CE0A-4BFA-80F2-2DA63F6AEB7C} + Exe + Task_Home_6___Сумма_чётных_и_нечётных_чисел_в_диапазоне + Task Home 6 - Сумма чётных и нечётных чисел в диапазоне + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ffcc78 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +

+

+ Banner + +

+ Typing SVG +

+

+ Static Badge + +

+

+ +# Разбор языка программирования C# 🍧 + +## 🔰 Зависимости +- runtime-5.0.17 - **.NET 5.0 Desktop** - где [**скачать?**](https://dotnet.microsoft.com/en-us/download/dotnet/5.0/runtime?cid=getdotnetcore&os=windows&arch=x64) +- полезная инфа - https://disk.yandex.ru/d/JO805r1zUVZ-XQ + +## ♨️ Содержание + +### Темы 🏀 + + +- 💥 Типы данных +- 💥 Переменные в языке +- 💥 Разбор классов **Convert, Parse, TryParse** +- 💥 Арифметические операции с числами и их приоритет выполнения +- 💥 Создание несколько проектов в одном решении +- 💥 Постфиксный и префиксный инкремент и декремент +- 💥 **Операторы** и **операции сравнения** +- 💥 Логические **операторы** и сокращённые логические операции +- 💥 Тернарный **оператор** и его примеры +- 💥 **Оператор** присваивания и объединения со значением NULL +- 💥 **Операторы** - as и is +- 💥 Конструкции **if~else**, **switch** +- 💥 Циклы **while**, **do~while**, **for** и **for** - в обратном порядке, **вложенные циклы** +- 💥 Ключевые слова **break**, **contine**, **ref**, **out**, **params**, **this**, **base**, **this в конструкторе**, модификатор **in** +- 💥 Массивы - **одномерные**, **многомерные**, **ступенчатые(зубчатые)** и **трёхмерные** +- 💥 **Перегрузка** методов +- 💥 Область видимости, контекст переменной, конфликт областей +- 💥 **Ссылочные** и **значимые** типы, **стек** и **куча** +- 💥 Что такое **NULL** +- 💥 Варианты параметров метода +- 💥 Что такое **рекурсия**, переполнение стека +- 💥 Преобразование и приведение, явное и неявное +- 💥 Арифметическое переполнение, **checked** и **unchecked** +- 💥 Что такое **Nullable**, Null совместимые значимые типы Nullable +- 💥 **Var** - неявно типизированные переменные +- 💥 **Еnum** - что это, и для чего нужно +- 💥 Что такое **Class**(ООП), **объект(object)**, **экземпляр** класса +- 💥 **Методы** и **классы**, **вызов метода** экземпляра класса +- 💥 Модификаторы доступа - **public**, **protected**, **private** +- 💥 **Инкапсуляция** с примерами +- 💥 Что такое **конструктор** класса +- 💥 **Перегрузка конструкторов** класса +- 💥 **Полиморфизм** с примерами +- 💥 Виртуальные методы, **virtual** и **override** +- 💥 **Абстрактные(abstract) классы** +- 💥 **Интерфейсы(interface)**, зачем нужны и как используются +- 💥 **Наследование** интерфейсов, **множественное наследование** +- 💥 Структуры(struct) и классы(class) - **отличия** +- 💥 **Упаковка(boxing)** и **распаковка(unboxing)** значимых(value)типов +- 💥 Обобщения, **Generic** типы, методы и классы + +### Задачи ⚽ + +- 🌟 Среднее арифметическое двух чисел +- 🌟 Введите три числа и выведите их произведение и суммы +- 🌟 Конвертер валюты +- 🌟 Проверка числа на чётность +- 🌟 Калькулятор на **Switch** и **If~Else** +- 🌟 Как нарисовать треугольник в консоли + +Данная информация по C# проработанна мной с плейлиста грамотного канала 👊 [#SimpleCode](https://www.youtube.com/playlist?list=PLQOaTSbfxUtD6kMmAYc8Fooqya3pjLs1N) 👊 \ No newline at end of file