Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инфа теория передел.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
447.59 Кб
Скачать

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; }