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

10. Классы в c#. Члены класса: методы, поля, свойства и события. Форма определения класса.

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

Простейшее объявление класса выглядит так:// Класс объявленный как public, доступен отовсюду, включая другие сборки // Можно также написать internal - класс будет доступен только из текущей сборки public class HelloWorldClass {public voi HelloWorld() {Console.WriteLine("Hello, world");}}

Члены классов Класс определяется как список своих членов. К членам класса относятся его поля (свойства) и функции (методы).Каждому члену класса можно установить его область доступа (access control level). Область доступа члена класса определяет участки кода, из которых к этому члену будет возможно обращаться.

Каждый член класса имеет признаки: public, protected, internal, protected internal, or private. internal: доступен только при ассемблировании; internal protected для обеспечения дополнительной гибкости; к члену класса могут иметь доступ либо классы из той же сборки, либо подклассы данного класса. private (закрытый, внутренний член класса доступен только из класса) — обращения к члену допускаются только из кода методов класса, в котором этот член определён. Любые наследники класса уже не смогут получить доступ к этому члену; protected (защищённый, внутренний член иерархии классов, доступен только от полученных классов) — обращения к члену допускаются из кода методов класса, в котором этот член определён, или из любых его классов-наследников; public (открытый член класса, доступен для всего кода) — обращения к члену допускаются из любого кода.

Методы Методы могут объявляться для принятия некоторого числа аргументов. По умолчанию происходит передача значений фундаментальным типам данных. Ключевое слово ref может использоваться для передачи значения по определенной ссылке, которая позволяет возвращать значение. Ключевое слово out также вызывает переход по ссылке без передачи значения.

Виртуальные методы Прежде, чем метод в базовом классе будет переписан, он должен быть объявлен как virtual. Метод в подклассе, который будет переписан, должен быть объявлен с помощью ключевого слова override. Это предотвратит случайную перезапись метода. Методы представляют собой действия, которые можно произвести в связи с данным классом. Возможные модификаторы - уже описанные public, static, protected, abstract и еще virtual, override, new и extern. Методам также можно передавать параметры, которые параметризуют его действия.

Метод ReadLine Метод ReadLine читает из потока ввода строку текста (она завершается символом перевода строки или возврата каретки).

Методы Write и WriteLine Метод Write выводит на экран значение переданной ему переменной. Он определен для всех базовых типов и поддерживает форматированные строки. Т.обр, можно либо вызвать Write с указанным значением в качестве параметра, либо передать строку форматирования и список значений.

Метод Main - это точка входа в программу. С него начинается выполнение. Этот метод обязательно должен быть статическим. Далее в нашем примере используется метод WriteLine из класса System.Console. Этот метод отправляет строку на стандартный вывод.

Поле класса Поле класса (переменная-член, data member, class field, instance variable) в объектно-ориентированном программировании — переменная, связанная с классом или объектом. Все данные объекта хранятся в его полях. Доступ к полям осуществляется по их имени. Обычно тип данных каждого поля задаётся в описании класса, членом которого является поле.

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

Статические поля Обычно каждому объекту соответствуют собственные значения всех его полей. Также к полям класса относят статические поля (static data members, static class fields, class variables) — поля, общие для всех объектов класса. Статические поля семантически не отличаются от обычных глобальных переменных, но они доступны только по указанному имени класса, и поэтому, в отличие от глобальных переменных, не загромождают пространство глобальных имён.

Битовые поля Эти поля занимают менее одной единицы памяти (байт, слово); компилятор сам упаковывает несколько битовых полей в одну единицу памяти, позволяя при этом обращаться к битовым болям как к отдельным полям класса.

Понятие битовых полей не ограничивается полями классов: по аналогии оно было перенесено и на другие случаи упаковки в одну единицу памяти нескольких значений, например в сетевых протоколах и в форматах файлов.

Поля только для чтения (readonly Fields) Поскольку переменные многих типов не могут быть константами, в некоторых ситуациях использовать ключевое слово const невозможно.

Свойства Во многих языках программирования свойства реализуются в виде пары методов: метод, получающий текущее значение свойства, называется акцессор (accessor); метод, задающий новое значение свойства — мутатор (mutator). Принято называть процедуры свойств именем свойства с приставками get и set. Свойства расширяют возможности полей. Они представляют собой типизированные объекты, у которых можно получить значение и (опционально) записать в них новое значение. При выполнении этих действий выполняется определяемый программистом код. С точки зрения пользователя, свойства выглядят практически так же, как и обычные поля класса. Им можно присваивать некоторые значения и получать их обратно. В то же время свойства имеют большую функциональность, так как чтение и изменение их значений выполняется с помощью специальных методов класса. Свойства позволяют не только возвращать и изменять значение внутренней переменной класса, но и выполнять дополнительные функции. Так, они позволяют произвести проверку значения или выполнить иные действия, как показано в вышеприведенном примере.

События Событийная модель становится неотъемлемой частью современного программирования. Она применяется повсеместно, но наиболее часто при создании интерфейса пользователя, когда каждое действие пользователя представляется в виде события и передается определенному объекту. Для объявления события в C# используются делегаты. Когда происходит событие, вызываются все методы делегатов, переданных классу клиентами. События могут использоваться только в том классе, в котором они описаны и не могут напрямую использоваться в порожденных классах.