- •Назначение платформы .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. Работа с таблицами
Вызов метода
При вызове метода на место формальных параметров помещаются фактические аргументы. Соответствие между параметром и аргументом устанавливается либо по позиции, либо используя синтаксис именованных аргументов:
<имя формального параметра> : <выражение для аргумента>
Использование именованных аргументов зачастую необходимо, если метод содержит опциональные параметры:
int res_4 = Add(10, z:20);
Метод с параметром-списком можно вызвать несколькими способами. Можно передать методу произвольное количество аргументов указанного типа или массив целых значений:
// передаем два аргумента
PrintList(10, 20);
// теперь передаем четыре аргумента
PrintList(1, 2, 3, 4);
// создаем и передаем массив целых чисел
PrintList(new[] { 10, 20, 30, 40 });
// можем вообще ничего не передавать
PrintList();
12, 13. Интерфейсы в языке c#. Объявление и реализация интерфейсов
В языке C# запрещено множественное наследование классов. Тем не менее, существует концепция, позволяющая имитировать множественное наследование. Эта концепция интерфейсов. Интерфейс представляет собой набор объявлений свойств, индексаторов, методов и событий. Класс или структура могут реализовывать интерфейс. В этом случае они берут на себя обязанность предоставить полную реализацию элементов интерфейса (хотя бы пустыми методами).
Для объявления интерфейса используется ключевое слово interface. Интерфейс содержит только заголовки методов, свойств и событий. Для свойства указываются только ключевые слова get и (или) set. При объявлении элементов интерфейса не могут использоваться следующие модификаторы: abstract, public, protected, internal, private, virtual, override, static. Считается, что все элементы интерфейса имеют public-уровень доступа:
public interface IFlyable
{
void Fly(); // метод
double Speed { get; set; } // свойство
}
Чтобы указать, что тип реализует некий интерфейс, используется синтаксис <имя типа>: <имя интерфейса> при записи заголовка типа. Если класс является производным от некоторого базового класса, то имя базового класса указывается перед именем реализуемого интерфейса.
Элементы интерфейса допускают явную и неявную реализацию. При неявной реализации тип должен содержать открытые экземплярные элементы, имена и сигнатура которых соответствуют элементам интерфейса. При явной реализации элемент типа называется по форме <имя интерфейса>.<имя элемента>, а указание любых модификаторов для элемента при этом запрещается.
public class Falcon : IFlyable
{
// неявная реализация интерфейса IFlyable
public void Fly() { Console.WriteLine("Falcon flies"); }
public double Speed { get; set; }
}
public class Eagle : IFlyable
{
// обычный метод
public void PrintType() { Console.WriteLine("Eagle"); }
// явная реализация интерфейса IFlyable
void IFlyable.Fly() { Console.WriteLine("Eagle flies"); }
double IFlyable.Speed { get; set; }
}
Если тип реализует некоторые элементы интерфейса явно, то такие элементы будут недоступны через переменную типа. Допустимо объявить переменную интерфейса, которая может содержать значение любого типа, реализующего интерфейс (для структур будет выполнена операция упаковки). Через переменную интерфейса можно вызывать только элементы интерфейса.
Все неявно реализуемые элементы интерфейса по умолчанию помечаются в классе как sealed.
