- •Назначение платформы .Net Framework.
- •Версии платформы .Net
- •Общие концепции синтаксиса языка с#
- •Система типов clr и языка c#. Типы-значения и ссылочные типы
- •Система типов clr и языка c#. Преобразование типов
- •Идентификаторы, ключевые слова и литералы в языке c#
- •Допустимые элементы класса
- •Классы. Модификаторы доступа для элементов и типов
- •Классы. Использование класса
- •Методы. Описание метода. Вызов метода
- •Описание метода
- •Вызов метода
- •12, 13. Интерфейсы в языке c#. Объявление и реализация интерфейсов
- •14. Универсальные шаблоны. Универсальные классы и структуры
- •Универсальные классы и структуры
- •15. Универсальные шаблоны. Ограничения на параметры универсальных типов
- •16. Делегаты в языке с#
- •17. Анонимные методы и лямбда-выражения в языке c#
- •18. Понятие Пространства имен. Применяемые пространства имен в .Net.
- •19. Препроцессорные директивы
- •20. Создание проекта в Visual Studio. Интерфейс среды.
- •21. Настройка внешнего вида и поведения формы. Добавление элементов управления. Категории элементов.
- •22. Создание mdi-приложений. Главное и дочерние окна. Упорядочивание mdi-окон
- •23. Работа с текстовыми файлами. Запись, чтение, открытие, создание.
- •24, 25, 26 Сериализация объектов в .Net.
- •27. Жизненный цикл объектов. Алгоритм «сборки мусора» Жизненный цикл объектов
- •Сборщик мусора
- •28. Жизненный цикл объектов. Финализаторы
- •29. Xml. Правило построения xml-документов Понятие о языке xml
- •Простейший xml-документ
- •30. Создание, сохранение, загрузка xml Создание, сохранение, загрузка xml
- •31. Состав и взаимодействие сборок
- •32 Многопоточное программирование. Класс Thread. Основные свойства класса.
- •33 Многопоточное программирование. Пул потоков
- •34. Синхронизация потоков
- •35, 36, 37. Аспекты безопасности .Net
- •35 Аспекты безопасности .Net. Разрешение на доступ
- •36 Аспекты безопасности .Net. Изолированные хранилища
- •37 Аспекты безопасности .Net. Криптография
- •38. Работа с ключами реестра в .Net.
- •43. Методы доступа к субд.
- •44. Метод доступа ado .Net.
- •45 Работа с элементами управления DataSet.
- •46. Создание базы данных ms sql server.
- •47. Соединение с базой данных. Открытие и закрытие соединения с базой данных.
- •48. Адаптер SqlDataAdapter. Запросы sql.
- •49 Разработка Windows приложений с использованием com объектов
- •50. Работа с com сервером Excel. Запуск и закрытие Excel из приложения на c#. Создание рабочих книг
- •51 Работа с com сервером Excel. Вывод информации в ячейки Excel
- •52 Работа с com сервером Excel. Создание диаграмм
- •53 Работа с com сервером Word. Создание и сохранение документов
- •54 Работа с com сервером Word. Вывод текстовой информации
- •55 Работа с com сервером Word. Работа с таблицами
Классы. Использование класса
Чтобы использовать класс после объявления (то есть, получить доступ к его открытым экземплярным элементам3), необходима переменная класса – объект. Объект объявляется как обычная переменная:
<имя класса> <имя объекта>;
Так как класс – ссылочный тип, то объекты должны быть инициализированы до непосредственного использования. Для инициализации объекта используется операция new ‑ вызов конструктора класса. Если конструктор не описывался, применяется предопределенный конструктор без параметров с именем класса:
<имя объекта> = new <имя класса>();
Инициализацию объекта можно совместить с его объявлением:
<имя класса> <имя объекта> = new <имя класса>();
Доступ к элементам класса через объект осуществляется по синтаксису <имя объекта>.<имя элемента>.
Методы. Описание метода. Вызов метода
Методы в языке C# являются неотъемлемой частью описания таких пользовательских типов как класс или структура. В C# не существует глобальных методов – любой метод должен быть членом класса или структуры.
Описание метода
Рассмотрим общий синтаксис описания метода:
<модификаторы> <тип> <имя метода>([<параметры>]) <тело метода>
Здесь <тип> – это тип возвращаемого методом значения. Допустимо использование любого примитивного или пользовательского типа. В C# формально не существует процедур – любой метод является функцией, возвращающей значение. Для «процедуры» в качестве типа указывается специальное ключевое слово void. После имени метода всегда следует пара круглых скобок, в которых указывается список формальных параметров метода (если этот список не пуст).
Список формальных параметров метода – это набор элементов, разделенных запятыми. Каждый элемент имеет следующий формат:
[<модификатор>] <тип> <имя формального параметра> [= <значение>]
Существуют четыре вида параметров, которые специфицируются модификатором:
Параметры-значения – объявляются без модификатора;
Параметры, передаваемые по ссылке – используют модификатор ref;
Выходные параметры – объявляются с модификатором out;
Параметры-списки – применяется модификатор params.
Параметры, передаваемые по ссылке и по значению, ведут себя аналогично тому, как это происходит в других языках программирования. Выходные параметры подобны ссылочным, то есть при работе с ними в теле метода не создается копия фактического параметра. Компилятор отслеживает, чтобы выходным параметрам в теле метода обязательно было присвоено значение.
Параметры-списки позволяют передать в метод любое количество аргументов. Метод может иметь не более одного параметра-списка, который обязательно должен быть последним в списке формальных параметров. Тип параметра-списка объявляется как массив, и работа с таким параметром происходит в методе как с массивом. Каждый аргумент из передаваемого в метод списка ведет себя как параметр, переданный по значению.
Рассмотрим несколько примеров объявления методов.
1. Простейшее объявление метода-процедуры без параметров:
void SayHello()
{ Console.WriteLine("Hello!");}
2. Метод без параметров, возвращающий целое значение:
int ReturnInt()
{ Console.WriteLine("Hello!");
return 5;}
3. Функция Add() выполняет сложение двух аргументов:
int Add(int a, int b)
{ return a + b;}
C# позволяет выполнить перегрузку методов в пользовательских типах. Перегруженные методы имеют одинаковое имя, но разную сигнатуру. Сигнатура – это упорядоченный набор из модификаторов и типов формальных параметров. Если две версии перегруженного метода различаются только модификатором params.
