Архив категорий: Обучающий материал

Пользовательские классы-исключения в C#

Пользовательские классы-исключения

В предыдущей статье я рассказывал о генерации исключений в программах, написанных на C#. Прочитав её, Вы узнаете для чего предназначен данный механизм и как им пользоваться. А в этой статье я хочу рассказать о том, как создавать свои классы-исключения, т.е. такие классы, объекты которых, можно использовать для генерации исключений оператором throw.

И так, как мы помним, механизм генерации исключений нужен для информирования системы, о том, что в программе произошла некая исключительная ситуация (ошибка) и дальнейшее выполнение программы, без её обработки, невозможно! А объекты-исключения, который как бы «выбрасываются в эфир» оператором throw должны содержать информацию о произошедшей ошибке. И когда Вы разрабатываете свой специфический класс, Вам нужно позаботиться о генерации исключений в нештатных ситуациях, связанных с неправильным использованием этого класса. И вот тут начинается самое интересное…

C#. Генерация исключений

Генерация исключений

В этой статье я расскажу о генерации исключений. Под генерацией исключений, я подразумеваю создание объектов описывающих исключительные ситуации, и информирование (с их помощью) системы о том, что произошла нештатная ситуация во время выполнения программы. И так, для чего же в C# предусмотрен механизм генерации исключений? Понимаете, в практике, программисту приходится не только обрабатывать ошибки, которые могут произойти во время выполнения программы, но и информировать систему, о том, что произошла какая-то ошибка в коде, который пишет он сам. Для понимания сути проблемы, давайте рассмотрим пример одного класса:

C#. Обработка исключений и блок finally

Блок finally

В этой статье я хочу рассказать об использовании ключевого слова finally в программах, написанных на C#. Тема данной статьи касается вопроса обработки исключительных ситуаций, и уже затрагивалась в уроках базового курса (Урок № 12. Обработка ошибокУрок №14. Детализация при обработке ошибок), но сегодня я расскажу о еще одном инструменте из этой области. В упомянутых выше уроках, я описывал подход к обработке ошибок, в соответствии с которым, код разделялся на два блока. В одном находился потенциально опасный код, а в другом — код обработки, возникших ошибок. Схематично это выглядит примерно так:

Пространства имен в C#

Пространства имен

В этой статье я хочу рассказать о пространствах имен в C#. Пространство имен (namespace) в C# представляет собой некий контейнер для логического объединения именованных сущностей, таких как классы, интерфейсы, перечисления и тому подобное. Для чего нужны такие контейнеры? Ну во-первых, пространства имен позволяют логически группировать классы и другие сущности, а во-вторых, позволяют использовать одни и те же имена для сущностей в разных пространствах имен. Причем, вторая функция даже больше востребована, так как логическую группировку тех же классов, программист может игнорировать, особенно, если классов не так много, а вот создать два класса с одним именем уже нельзя, не даст компилятор! 

C#. Переопределение и скрытие методов

Переопределение и скрытие методов

В этой статье, я расскажу об использовании ключевых слов new и override применительно к методам классов в C#. Я не буду затрагивать все тонкости использования этих ключевых слов в данном контексте, а наоборот, постараюсь донести самые основные моменты в доступной форме. Скажу сразу, что тема настоящей статьи актуальна при условии, что Вы знакомы с основами ООП (объектно-ориентированного программирования). И так, к делу!

Механизмы переопределения и скрытия методов используются при наличии наследования, и то, не в каждой ситуации, а только в тех, когда Вы создаете в производном классе метод, повторяющий метод базового класса (естественно со своей, специфической реализацией, отличающейся от реализации базового). Давайте сначала разберем случай скрытия метода базового класса в производном.

Абстрактные классы в C#

Абстрактные классы

В предыдущих статьях (sealed классы в C# и статические классы в C#) я рассказывал про достаточно специфические классы, это классы, которые не могут быть использованы в качестве базовых классов (это sealed классы) и классы, объекты которых нельзя создавать в своих программах (это статические классы, хотя, они и в наследовании участия принимать тоже не могут). Так вот в этой статье, я хочу рассказать о еще одном типе классов, это абстрактные классы.

Статические классы в C#

Статические классы

В этой статье я хочу рассказать о создании статических классов (не просто классов, в которых всего лишь присутствуют статические сущности, такие как поля, метод, свойства и т.п., об этом я рассказывал в предыдущей статье), а так же об особенностях их использования. Класс считается статическим, если при его создании, перед ключевым словом class указывается ключевое слово static. Определение класса статическим, означает то, что этот класс является набором только статических сущностей (полей, методов, свойств и т.п.), и, внимание, создавать объекты такого класс нельзя!

C#. Статические методы и не только

Ключевое слово static

В этой статье я хочу рассказать об использовании ключевого слова static в программах, написанных на C#. Это ключевое слово может относится (может быть указано) к методам, полям, свойствам, событиям, конструкторам, операторам классов (и даже к самим классам, но об этом будет отдельный разговор). Ключевое слово static, указанное перед какой-либо сущностью класса, делает её статической. Это значит то, что данная сущность принадлежит не конкретному объекту класса, а всему классу, как типу данных. Другими словами, если обычное поле класса принадлежит объекту, и у каждого конкретного объекта есть как бы своя копия данного поля, то статическое поле одно для всего класса. Для примера, посмотрите на код ниже:

SEALED классы в C#

Запрет наследования

В этой статье, я хочу сказать пару слов о явном запрете наследования. Точнее о том, как можно запретить использование написанного Вами класса, в качестве базового для других. Я постараюсь доступно и коротко обосновать зачем, и вообще это нужно ли это делать. Материал этой статьи так или иначе связан с темой наследования классов, так что, если Вы еще не знакомы с механизмом наследования, то можете не читать эту статью, а перейти к изучению основ. Вот Вам ссылка на урок, посвященный наследованию классов в C#. А для тех кто уже в теме, я продолжу повествование…

Ключевое слово this в C#

Использование this

В этой статье, я расскажу об использовании ключевого слова this в программах, написанных на C#. О том, для чего, как и когда его можно использовать. Сразу скажу, что почти всегда, можно обойтись без использования this, но «что это такое» знать нужно каждому программисту! И так, мы рассмотрим три контекста (случая, или варианта, если хотите) использования этого ключевого слова.

Вообще, ключевое слово this актуально «внутри класса», в его методах, свойствах и тому подомном.