Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры C#.doc
Скачиваний:
17
Добавлен:
22.09.2019
Размер:
472.58 Кб
Скачать

16.Область видимости и время существования переменных. Преобразование и приведение типов.

В C# разрешается объявлять переменные внутри фигурных скобок. Любой блок определяет область объявления, или область видимости объектов. Обл. видимости также определяет и время сущ-ния этих объектов. Важными явл.обл-ти видимости, кот.определены классом и методом. Область видимости, определяемая методом, начинается с {. При объявлении переменной внутри обл-ти видимости мы защищаем ее от неправомочного доступа. Эти правила обл-ти видимости обеспечивают основу для инкапсуляции. Обл-ти видимости могут быть вложенными. Переменные создаются после входа в обл. видимости, а разрушаются при выходе из нее. Э.з. что переем.не будет хранить значение за пределами обл. видимости. - время сущ-я переменной ограничивается ее областью видимости; - ни одна переем., объявленная во внутр. области видимости, не может иметь имя, совпад-е с именем переменной, объявленной во внешней области видимости. Преобразование типов. Часто возникает необх-сть переменной одного типа присвоить значение переменной другого типа. Преобразование между типами данных бывает двух видов: неявное и явное (автоматическое). Неявное преобразование – это преобр-е типов данных, кот. явно не задано и выполняется без спец. указанной команды, т.е такие преобр-я выполняются автомат. Автомат.преобр.будет вып., если: - оба типа совместимы, - тип переменной - приемника больше, чем тип источника. => вып-ся преобр-е с расширением, или расширяющее преобразование. Явное преобр-е – явно заданная инстр-я компилятору преобразовать один тип в другой. Инстр-я зап.так: (тип_приемника) выражение.

Если приведение приводит к сужающему преобр-ю, то возможна потеря инф-ции. Преобр.типов может встречаться и в выражениях. Преобр. типов вып.на основе правил продвижения по «типовой» лестнице.

17.Обработка исключительных ситуаций.

В языке С# предусмотрена обработка ошибочных ситуаций, связанных с выполнением таких системных действий как ввод/вывод через файлы, делением на 0. За обработку исключений отвечает класс ошибок System.Exseption. Для обработки исключений в соответствующем методе класса или в Main() нужно оформить 2 блока:

Блок try { //оператор. Здесь может произойти ошибка! }

Блок catch (System.Exsception err) { //операторы. Выполняется перехват ошибок указанного типа }

При возникновении ошибки внутри блока try проверяется какой тип ошибок перехватывает блок catsh. Для одного блока try можна указать несколько различных блоков catch перехватывающих разные типы ошибок. Если тип ошибок, указанный в блоке catch, не соотв.типу возникшей ошибки, программа прерывается аварийно. Объектная переменная err имеет несколько полезных св-в, которые доступны в приложении: Uessage – содержит текст ошибки; targetSite – создает имя метода, вызвавшего ошибку; Sounce – создает имя приложения, вызвавшего ошибку. Иногда блок catch оформляется кратко: catch(Exsception err) { C.Wr.(err.Message); C.RL(); }

18.Перегрузка методов. Перегрузка конструкторов.

В C# методы внутри одного класса могут иметь одинаковое имя при условии, что их параметры будут разл.. Такую ситуацию наз. перегрузкой методов, а методы – перегруженными. Перегрузка методов – один их способов реализации полиморфизма в C#. Все перегруженные методы должны иметь списки параметров, которые отличаются по типу и/или количеству. Методам для перегрузки недостаточно отличаться лишь типами возвращаемых значений, может произойти автоматическое преобразование типов. Они должны отличаться типами или числом параметров. При вызове перегруженного метода выполняется та его версия, параметры которой совпадают (по типу и /или количеству) с заданными аргументами. Перегрузка методов нужно тогда, когда нужно реализовать один и тот же метод для различных типов данных, чтобы не плодить имена. Перегрузка упрощает процесс программирования. Следует отметить, что params-параметр не является определяющим фактором отличия перегруженного метода от другого (ведь можно и 0 аргументов через params передать). Тип возврата значения и params – это не факторы перегруженного метода. Конструкторы тоже можно перегружать. Это позволяет создавать объекты различными способами. Перегружая констры предоставляет определенную гибкость в выборе способов создания объектов. Одна из распр.причин перегрузки – возм-сть инициализации одного объекта с помощью другого. Конструкторы, в которых создаваемый объект инициализируется объектом-параметром, наз. конструктором копирования. Class Stac { //члены-перем.: //char[] mas; //массив для хранения данных стека int tos; }