Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_ПЯВУ (5 семестр).doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
86 Кб
Скачать
☆

21.Являются ли методы со следующими заголовками правильно перегруженными?

public double Average(int x, int y);

public int Average(int x, int y);

Не являются. Ниже верные варианты.

using System;

class Average {

public double AverageDemo (double x, double y) {

Console.WriteLine("Два double-параметра: " + x + " "+ y);

return x + y;

}

using System;

class Average {

public int AverageDemo (int x, int y) {

Console.WriteLine("Два int-параметра: " + x + " " + y);

return x + y;

}

22.Как перегруженные конструкторы делаю класс более удобным при использовании?

Перегружая конструктор класса, вы тем самым предоставляете пользователю этого класса определенную гибкость в выборе способа создания объектов.

Одна из самых распространенных причин перегрузки конструкторов — возможность инициализации одного объекта с помощью другого.

При работе с перегруженными конструкторами иногда необходимо обеспечить вызов одного конструктора из другого. В С# это реализуется с помощью еще одной формы ключевого слова t h i s . Общий формат записи такого вызова:

имя_конструктора (список__параметров1) :

t h i s (список__параметров2) {

/I . . . Тело конструктора,

// которое может быть пустым.

}

Преимущество использования ключевого слова t h i s для вызова перегруженных конструкторов состоит в том, что можно избежать ненужного дублирования кода

23.Назовите две основные задачи сборщика мусора?

Система сбора мусора С# автоматически возвращает память для повторного использования, действуя незаметно и без вмешательства программиста. Ее работа заключается в следующем. Если не существует ни одной ссылки на объект, то предполагается, что этот объект больше не нужен, и занимаемая им память освобождается. Эту (восстановленную) память снова можно использовать для размещения других объектов. Система сбора мусора действует только спорадически во время выполнения отдельной программы. Эта система может и бездействовать: она не "включается" лишь потому, что существует один или несколько объектов, которые больше не используются в программе. Поскольку на сбор мусора требуется определенное время, динамическая система С# активизирует этот процесс только по необходимости или в специальных случаях. Таким образом, вы даже не будете знать, когда происходит сбор мусора, а когда — нет.

24.Что такое деструктор? Почему он не используется для освобождения ресурсов, не относящихся к памяти?

Средства языка С# позволяют определить метод, который должен вызываться непосредственно перед тем, как объект будет окончательно разрушен системой сбора мусора. Этот метод называется деструктором, и его можно использовать для обеспечения гарантии "чистоты" ликвидации объекта. Например, вы могли бы использовать деструктор для гарантированного закрытия файла, открытого некоторым объектом. Формат записи деструктора такой:

~имя_класса() {

// код деструктора

}

Очевидно, что элемент имя_класса здесь означает имя класса. Таким образом, деструктор объявляется подобно конструктору за исключением того, что его имени предшествует символ "тильда" (~). (Подобно конструктору, деструктор не возвращает значения.)

Чтобы добавить деструктор в класс, достаточно включить его как член. Он вызывается в момент, предшествующий процессу утилизации объекта. В теле деструктора вы указываете действия, которые, по вашему мнению, должны быть выполнены перед разрушением объекта.