
- •12. Фундаментальные принципы ооп
- •13. Методы
- •14. Конструкторы и деструкторы
- •15. Структуры и перечисления
- •16. Свойства и поля класса
- •18. Анонимные типы
- •20. Расширяющие методы.
- •19. Перегрузка операций в классе. Явное и неявное преобразование типов. Ограничения на преобразование типов.
- •17. Статические поля, методы, конструкторы, классы.
- •2. Типы данных
- •3. Базовые типы
- •Унарные операции Можно определять в классе следующие унарные операции:
- •Бинарные операции
- •5.Выражения (порядок их вычисления, тип результата, оператор присваивания).
- •6.Операторы ветвления (if, switch, case, break , goto case).
- •Оператор break
- •Оператор goto-оператор безусловного перехода. Когда в программе встречается оператор goto, ее выполнение переходит непосредственно к тому месту, на которое указывает этот оператор.
- •7. Операторы цикла (for, while, do-while, foreach, break continue).
- •8. Обработка исключений (операторы обработки исключений, класс Exception, создание объектов Exception, захват исключения, последовательность обработки исключений, классы Debug и Trace)
- •9. Массивы (одномерные, многомерные и ступенчатые массивы, класс Array).
- •Многомерные массивы
- •Ступенчатые массивы
- •10. Создание и подключение сборок. Пространства имен (ключевые слова using, namespace)
- •11. Сложение:
- •14. Структурные блоки платформы .Net: cli, clr, cls, cts.
- •17. Таблица приоритетов операций, соответствующая Common Language Specification (cls)
- •21. Интерфейс программирования приложений WinForms.
- •22. Интерфейс программирования приложений wpf.
- •24.Кодирование символов (ascii, utf, utf-8, utf-16)
- •3.Вопросы по c# часть 1
- •22 Делегаты
- •23 События
- •24 Наследование классов
- •25 Интерфейсы
- •26 Шаблоны и интерфейс iEnumerable
- •27 Динамический тип данных
- •Статический класс Environment.
- •2) Класс DriveInfo.
- •3) Классы для работы с каталогами (папками) (System.Io.Directory, System.Io.DirectoryInfo)
- •9.2.3. Создание подпапок с помощью класса DirectoryInfo
- •9.3. Работа с классом Directory
- •9.4. Работа с классом DriveInfo
- •Классы для работы с файлами (System.Io.File, System.Io.FileInfo).
- •9.1. Абстрактный базовый класс FileSystemInfo
3.Вопросы по c# часть 1
1. Переменные (объявление переменных, область видимости, константы, время жизни переменных).
Обьявление переменных в C# выглядит следующим образом:
типПеременной имяПеременной:
int myVariable;
Этот код обьявляет переменную типа int под названием myVariable. Обьявлять и инициализировать переменную можно одновременно, выглядит это так:
int myVariable = 5;
Память для переменной выделяется уже при обьявлении, поэтому перед использованием переменной нужно присвоить ей какое-то значение. В C# используется два метода обеспечения гарантии инициализации переменных:
переменные, которые являются полями класса или структуры, если не инициализированы явно, то по умолчанию обнуляются в момент создания;
переменные, локальные по отношению к методу, должны быть явно инициализированы, до появления любого оператора в котором используется значение переменной.
Область видимости переменной - это та часть кода, в пределах которого доступна данная переменная. Область определяется такими правилами:
Поле (field), известное также как переменная-член класса, находится в области видимости до тех пор, пока в этой области находится содержащий поле класс;
Локальная переменная (local variable) - находится в области видимости до конца блока операторов или метода в котором она обьявлена;
Локальная переменная, которая обьявлена в операторах for, while или подобных им, видна в пределах тела цикла.
Константы представляют собой неизменные значения, известные во время компиляции и неизменяемые на протяжении времени существования программы.Константы объявляются с модификатором const. Только встроенные типы C# (за исключением System.Object) могут быть объявлены как const. Определяемые пользователем типы, включая классы, структуры и массивы, не могут бытьconst. Для создания класса, структуры или массива, которые инициализируются один раз во время выполнения (например, в конструкторе) и после этого не могут быть изменены, используется модификатор readonly. Константы должны инициализировать сразу после объявления. Доступ к константам осуществляется так, как если бы они были статическими полями, поскольку значение константы одинаково для всех экземпляров типа. Время существования переменной представляет собой период, в течение которого она может иметь значение. В течение времени существования значение переменной может меняться, но переменная всегда имеет какое-то значение. Переменная-член (объявленная на уровне модуля вне какой-либо процедуры) обычно имеет то же время существования, что и элемент, в котором она была объявлена. Не являющиеся общими переменные, объявленные в классе или структуре, существуют как отдельные копии для каждого экземпляра класса или структуры, в которых они были объявлены. Каждая такая переменная имеет то же время существования, что и экземпляр класса. Однако переменная, объявленная как Shared, обладает сроком существования, который длится в течение работы приложения.
Локальная переменная (объявленная внутри процедуры) существует только во время работы процедуры, в которой она объявлена. Это также относится к аргументам этой процедуры и значениям, возвращаемым функциями. Однако если эта процедура вызывает другие процедуры, значения ее локальных переменных сохраняются во время работы вызываемых процедур. Если объявить локальную переменную с ключевым словом Static, ее время существования будет дольше времени выполнения процедуры:
Расположение процедуры и совместное использование |
Начинается время существования статической переменной |
Заканчивается время существования статической переменной |
В модуле (общем по умолчанию) |
При первом вызове процедуры |
При остановке выполнения приложения |
В классе, Shared (процедура не является элементом экземпляра) |
Первый раз процедура вызывается определенным экземпляром или именем самого класса или структуры |
При остановке выполнения приложения |
В экземпляре класса, не Shared (процедура является элементом экземпляра) |
При первом вызове процедуры для определенного экземпляра |
Когда экземпляр освобождается для сборки мусора |
21.XML-комментарии. Это такие специальные теги XML, которые содержаться в комментариях и описывают свойства или методы в конкретном файле. Так вот, есть по крайней мере три веских причины, почему всегда следует заполнять XML комментарии. Во-первых, такой подход позволяет стандартизировать комментарии в вашем проекте и, впринцепе, во всех проектах на C#, а стандарты в нашем деле это почти всегда хорошо. Во-вторых, IntelliSense будет автоматически отображать информацию о документированых методах и параметрах, также как и для методов, встроенных во фреймворк. Это очень сильно облегчит работу и сэкономит время и вам и другим разработчикам, работающим с вами. И в-третьих, на этапе компиляции можно сгенерировать XML файл, который будет содержать все комментарии в удобном формате, а с этим файлом уже можно сделать все что угодно. А теперь мы рассмотрим теги, рекомендованные для использования. Для того, чтобы начать их вводить, нужно сначала поставить "///".
Тег Используется для
<c> одна строка исходного кода
<code> много строк исходного кода
<example> пример использования, можно использовать совместно с тегом <code>
<exception> позволяет указать, какие исключения наш метод может выдавать
<include> позволяет поставить ссылку на файл, в котором содержаться комментарии, используя XPath
<list> обычный список
<para> а это обычный параграф
<param> описания параметра метода, каждый параметр описывается отдельно
<paramref> позволяет указать, что слово внутри тега является параметром
<permission> позволяет описать права доступа к методу
<remarks> дополнительная информация, помимо тега <summary>
<returns> описание того, что метод возвращает
<see> позволяет указывать ссылки
<seealso> текст в секции «Смотри также»
<summary> общее описание
<value> позволяет описывать свойства
Пример:
/// <summary> /// Этот метод передаёт привет Павлу Евгеньевичу столько раз, сколько скажите. /// </summary> /// <param name="repeat">Сколько раз передать привет</param> /// <returns>Сама строка с приветами</returns> public string HelloPaul(int repeat) { string result = ""; for (int i = 0; i < repeat; i++) { result += "Hello, Paul E.!\n"; } return result; }