- •1.Технология .Net Framework
- •6. В чем отличие платформы . Net от стандартного подхода к разработке программ.
- •7. Алфавит и лексемы языка программирования с#.
- •8. Типы данных в .Net Framework.
- •9. Переменные типа ссылки. Пример использования.
- •10. Инициализация переменных, констант. Специальные символы при инициализации строк.
- •11. Область видимости переменных.
- •12. Именование переменных.
- •14. Явное и неявное преобразование типов данных.
- •15. Ввод с клавиатуры. Преобразование строк в числа.
- •16. Перечислимые типы.
- •17. Структуры.
- •18.Структура if.
- •19. Структура switch.
- •20. Цикл while.
- •21. Оператор do.
- •22. Оператор for.
- •23. Оператор foreach.
- •24.Оператор goto.
- •25. Операторы break и continue.
- •26. Понятие исключения.
- •27. Перехват исключений.
- •28. Бросание исключений.
- •29. Определение массива. Объявление, инициализация.
- •30. Доступ к элементам массива.
- •31.Основные свойства и методы массивов.
- •32.Коллекции. Их виды.
- •33. Методы в с#
- •34. Вызов метода
- •35. Возврат из метода. Возврат значений из метода.
- •36. Параметры методов. Передача параметров по значению. Передача параметров по ссылке.
- •37. Понятие ооп. Классы и объекты
- •38. Основные три принципа ооп.
- •39. Понятие конструктора. Параметры конструктора
- •40. Понятие деструктора.
- •41. Управление памятью. Алгоритм работы Garbage Collector.
- •42 Управление доступом к элементам сущности.
- •43 Интерфейсы. Правила использования интерфейсов.
- •44 Абстрактные классы
- •45. Класс Random. Основные методы класса System.Random.
- •46 Математические функции – класс Math. Основные методы класса System.Math.
- •47 Пространства имен. Использование пространства имен.
- •48 Операции над строками. Основные элементы класса System.String.
- •49 Работа с символами в с#. Основные методы класса System.Char.
- •50. Классы .Net для работы с файлами. Основные классы пространства имен System.Io.
- •51. Структыры
- •52. Перечисления
- •53. Основные понятия ооп.
- •54. Конструкторы. Параметр this. Ключевое слово this.
- •55. Интерфейсы. Правила использования.
- •56. Семейства и индексаторы. Интерфейсы для работы с семействами.
- •57.Делегаты. Операции с делегатами. Использование делегатов.
- •58. Сборки и библиотеки. Атрибуты, директивы сборки.
56. Семейства и индексаторы. Интерфейсы для работы с семействами.
Создайте класс семейства People (люди), который представляет
собой семейство класса Person. Доступ к элементам семейства
должен быть организован через строковый индексатор,
являющийся именем лица, которое идентично свойству Person,Name.
public class People
{private List<Person> people = new List<Person>();
public Person this[string name]
{ get
{ returnpeople.FirstOrDefault(person =>person.Name == name); } }}
Интерфейс для работы с семействами
Реализуйте в классе People интерфейс IСloneable,
который бы обеспечивал выполнение глубокого копирования.
public class People : ICloneable
{ public object Clone()
{ People clones = new People();
foreach (var person in this.people) {
var clone = new Person();
clone.Name = person.Name;
clone.Age = person.Age;
clones.people.Add(clone); }
returnclones; }}
Индексаторы
Ниже приведена общая форма одномерного индексатора:
тип_элемента this[intиндекс] {
//Аксессор для получения данных.
get{// Возврат значения, которое определяет индекс.
} //Аксессор для установки данных.
set: { // Установказначения, которое определяет индекс.
}}
где тип_элемента обозначает конкретный тип элемента индексатора. Следовательно, у каждого элемента, доступного с помощью индексатора, должен быть определенный тип элемента. Этот тип соответствует типу элемента массива. Параметр индекс получает конкретный индекс элемента, к которому осуществляется доступ. Формально этот параметр совсем не обязательно должен иметь тип int:, но поскольку индексаторы, как правило, применяются для индексирования массивов, то чаще всего используется целочисленный тип данного параметра.
В теле индексатора определены два аксессора (т.е. средства доступа к данным): get и set. Аксессор подобен методу, за исключением того, что в нем не объявляется тип возвращаемого значения или параметры. Аксессоры вызываются автоматически при использовании индексатора, и оба получают -индекс в качестве параметра. Так, если индексатор указывается в левой части оператора присваивания, то вызывается аксессор set и устанавливается элемент, на который указывает параметр индекс. В противном случае вызывается аксессор get и возвращается значение, соответствующее параметру индекс. Кроме того, аксессор set получает неявный параметр Vа1ие/ содержащий значение, присваиваемое по указанному индексу.
57.Делегаты. Операции с делегатами. Использование делегатов.
Делегат представляет собой объект, который может ссылаться на метод. Следовательно, когда создается делегат, то в итоге получается объект, содержащий ссылку на метод. Более того, метод можно вызывать по этой ссылке. Иными словами, делегат позволяет вызывать метод, на который он ссылается. Следует особо подчеркнуть, что один и тот же делегат может быть использован для вызова разных методов во время выполнения программы, для чего достаточно изменить метод, на который ссылается делегат. Таким образом, метод, вызываемый делегатом, определяется во время выполнения, а не в процессе компиляции. В этом, собственно, и заключается главное преимущество делегата.
Тип делегата объявляется с помощью ключевого слова delegate. Ниже приведенаобщая форма объявления делегата:
delegate возвращаемый_тип имя(список_параметров) ;
где возвращаемый_тип обозначает тип значения, возвращаемого методами, которые будут вызываться делегатом; имя — конкретное имя делегата; список_параметров — параметры, необходимые для методов, вызываемых делегатом. Как только будет создан экземпляр делегата, он может вызывать и ссылаться на те методы, возвращаемый тип и параметры которых соответствуют указанным в объявлении делегата.
Объект делегата обычно создается указанием имени метода, для которого делегат будет служить оболочкой, или с помощью анонимного метода. После создания экземпляра делегата вызов метода, выполненный в делегате, передается делегатом в этот метод. Параметры, передаваемые делегату вызывающим объектом, передаются в метод, а возвращаемое методом значение (при его наличии) возвращается делегатом в вызывающий объект. Эта процедура называется вызовом делегата. Делегат, для которого создан экземпляр, можно вызвать, как если бы это был метод, для которого создается оболочка.
Делегат следует использовать в следующих ситуациях:
Используется шаблон разработки событий.
Желательно инкапсулировать статический метод.
Вызывающему не требуется доступ к другим свойствам, методам или интерфейсам объекта для реализации метода.
Желательно простое построение.
Классу может потребоваться несколько реализаций метода.