- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания C# 4.0: полное руководство - Герберт Шилдт
Шрифт:
Интервал:
Закладка:
public virtual double NextDouble() - Возвращает из последовательности следующее случайное число, которое представлено в форме с плавающей точкой, больше или равно 0,0 и меньше 1,0
protected virtual double Sample() - Возвращает из последовательности следующее случайное число, которое представлено в форме с плавающей точкой, больше или равно 0,0 и меньше 1,0. Для получения несимметричного или специального распределения случайных чисел этот метод необходимо переопределить в производном классе
Ниже приведена программа, в которой применение класса Random демонстрируется на примере создания компьютерного варианта пары игральных костей.
// Компьютерный вариант пары игральных костей.
using System;
class RandDice {
static void Main() {
Random ran = new Random();
Console.Write(ran.Next(1, 7) + " ");
Console.WriteLine(ran.Next(1, 7));
}
}
При выполнении этой программы три раза подряд могут быть получены, например, следующие результаты.
5 2
4 4
1 6
Сначала в этой программе создается объект класса Random. А затем в ней запрашиваются два случайных значения в пределах от 1 до 6.
Управление памятью и класс GC
В классе GC инкапсулируются средства "сборки мусора". Методы, определенные в этом классе, перечислены в табл. 21.15.
Таблица 21.15. Методы, определенные в классе GC
Метод - Назначение
public static voidAddMemoryPressure(long bytesAllocated) - Задает в качестве параметра bytes Allocated количество байтов, распределенных в неуправляемой области памяти
public static void CancelFullGCNotification() - Отменяет уведомление о “сборке мусора”
public static void Collect() public static void Collect(int generation) - Инициализирует процесс “сборки мусора”
public static void Collect (int generation, GCCollectionMode mode) - Инициализирует процесс “сборки мусора” в областях памяти с номерами поколений от 0 до generation
public static int CollectionCount (int generation) - Инициализирует процесс “сборки мусора” в областях памяти с номерами поколений от 0 до generation в'режиме, определяемом параметром mode
public static int GetGeneration (object obj) - Возвращает количество операций “сборки мусора”, выполненных в области памяти с номером поколения generation Возвращает номером поколения для области памяти, доступной по ссылке obj
public static int GetGeneration(WeakReference wo) - Возвращает номер поколения для области памяти, доступной по “слабой" ссылке, задаваемой параметром wo. Наличие “слабой" ссылки не защищает объект от “сборки мусора”
public static long GetTotalMemory(bool forceFullCollection) - Возвращает общий объем памяти (в байтах), выделенной на данный момент. Если параметр forceFullCollection имеет логическое значение true, то сначала выполняется “сборка мусора”
public static void KeepAlive(object obj) Создает ссылку на объект obj, защищая его от “сборки мусора”. Действие этой ссылки оканчивается после выполнения метода KeepAlive()
public static void RegisterForFullGCNotification(int maxGenerationThreshold, int largeObjectHeapThreshold) - Разрешает уведомление о “сборке мусора”. Значение параметра maxGenerationThreshold обозначает количество объектов второго поколения в обычной “куче", которые будут инициировать уведомление. А значение параметра largeObjectHeapThreshold обозначает количество объектов в крупной “куче", которые будут инициировать уведомление. Оба значения должны быть указаны в пределах от 1 до 99
public static void RemoveMemoryPressure(long bytesAllocated) - Задает в качестве параметра bytesAllocated количество байтов, освобождаемых в неуправляемой области памяти
public static void ReRegisterForFinalize(object obj) - Вызывает деструктор для объекта obj. Этот метод аннулирует действие метода SuppressFinalize()
public static void SuppressFinalize(object obj) - Препятствует вызову деструктора для объекта obj
public static GCNotificationStatus WaitForFullGCApproach() - Ожидает уведомления о том, что должен произойти полный цикл “сборки мусора”. Здесь GCNotificationStatus — перечисление, определенное в пространстве имен System
public static GCNotificationStatus WaitForFullGCApproach(int millisecondsTimeout) - Ожидает уведомления о том, что долженпроизойти полный цикл “сборки мусора", в течение времени, задаваемого пара метром millisecondsTimeout. Здесь GCNotificationStatus — перечисление, определенное в пространстве имен System
public static GCNotificationStatus WaitForFullGCComplete() - Ожидает уведомления о завершении полного цикла “сборки мусора". Здесь GCNotificationStatus — перечисление, определенное в пространстве имен System
public static GCNotificationStatus WaitForFullComplete (int millisecondsTimeout) - Ожидает уведомления о завершении полного цикла "сборки мусора" в течение времени, задаваемого параметром millisecondsTimeout. Здесь GCNotificationStatus — перечисление, определенное в пространстве имен System
public static void WaitForPendingFinalizers() - Прекращает выполнение вызывающего потока до тех пор, пока не будут выполнены все вызванные и незавершенные деструкторы
Кроме того, в классе GC определяется следующее доступное только для чтения свойство:
public static int MaxGeneration { get; }
Свойство MaxGeneration содержит максимальный номер поколения, доступный для системы. Номер поколения обозначает возраст выделенной области памяти. Чем старше выделенная область памяти, тем больше номер ее поколения. Номера поколений позволяют повысить эффективность работы системы " сборки мусора".
В большинстве приложений возможности класса GC не используются. Но в особых случаях они оказываются весьма полезными. Допустим, что требуется организовать принудительную "сборку мусора" с помощью метода Collect() в выбранный момент времени. Как правило, "сборка мусора" происходит в моменты, не указываемые специально в программе. А поскольку для ее выполнения требуется некоторое время, то желательно, чтобы она не происходила в тот момент, когда решается критичная по времени задача. С другой стороны, "сборку мусора" и другие вспомогательные операции можно выполнить во время простоя программы. Имеется также возможность регистрировать уведомления о приближении и завершении "сборки мусора".
Для проектов с неуправляемым кодом особое значение имеют два следующих метода из класса GC: AddMemoryPressure() и RemoveMemoryPressure(). С их помощью указывается большой объем неуправляемой памяти, выделяемой или освобождаемой в программе. Особое значение этих методов состоит в том, что система управления памятью не контролирует область неуправляемой памяти. Если программа выделяет большой объем неуправляемой памяти, то это может сказаться на производительности, поскольку системе ничего неизвестно о таком сокращении объема свободно доступной памяти. Если же большой объем неуправляемой памяти выделяется с помощью метода AddMemoryPressure(), то система CLR уведомляется о сокращении объема свободно доступной памяти. А если выделенная область памяти освобождается с помощью метода RemoveMemoryPressure(), то система CLR уведомляется о соответствующем восстановлении объема свободно доступной памяти. Следует, однако, иметь в виду, что метод RemoveMemoryPressure() необходимо вызывать только для уведомления об освобождении области неуправляемой памяти, выделенной с помощью метода AddMemoryPressure().
Класс object
В основу типа object в C# положен класс object. Члены класса Object подробно рассматривались в главе 11, но поскольку он играет главную роль в С#, то его методы ради удобства повторно перечисляются в табл. 21.16. В классе object определен конструктор
public Object()
который создает пустой объект.
Таблица 21.16. Методы, определенные в классе Object
Метод - Назначение
public virtual bool Equals(object obj) - Возвращает логическое значение true, если вызывающий объект оказывается таким же, как и объект, определяемый параметром obj. В противном случае возвращается значение false
public static bool Equals(object obj A, object objB) - Возвращает логическое значение true, если объект obj А оказывается таким же, как и объект objB. В противном случае возвращается значение false