Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C#

Г. Шилдт - Полный справочник по C# (1160789), страница 101

Файл №1160789 Г. Шилдт - Полный справочник по C# (Г. Шилдт - Полный справочник по C#) 101 страницаГ. Шилдт - Полный справочник по C# (1160789) страница 1012019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 101)

Последовательности случайных чисел используются во многих ситуациях, в том числе при моделировании и проведении имитационных экспериментов.Начало такой последовательности определяется некоторым начальным числом, которое автоматически предоставляется классом Random или задается явным образом.В классе Random определены следующие два конструктора:public Random()public Random(int seed)534Часть II. Библиотека С#С помощью первой версии конструктора создается объект класса Random, которыйдля вычисления начального числа последовательности случайных чисел используетсистемное время.

При использовании второй версии конструктора начальное числозадается в параметре seed.Методы, определенные в классе Random, перечислены в табл. 19.14.Таблица 19.14. Методы, определенные в классе RandomМетодp u b l i c v i r t u a l i n t Nextopublic virtual intNext ( i n t upperBound)public virtual intNext ( i n t lowerBound,i n t upperBound)public v i r t u a l voidN e x t B y t e s ( b y t e [ ] bur")p u b l i c v i r t u a l doubleNextDoubie ()p r o t e c t e d v i r t u a l doublesample ()ОписаниеВозвращает следующее случайное число типа i n t . которое будетнаходиться в диапазоне 0-int32 .MaxVaiue-1, включительноВозвращает следующее случайное число типа i n t , которое будетнаходиться в диапазоне 0- upperBounchi, включительноВозвращает следующее случайное число типа i n t , которое будетнаходиться в диапазоне lowerBound-upperBound-^ВКЛЮчительноЗаполняет буфер buf последовательностью случайных целых чисел.

Каждый байт в массиве будет находиться в диапазоне 0B y t e . MaxValue-1, включительноВозвращает следующее случайное число из последовательности(представленное в форме с плавающей точкой), которое будетбольше или равно числу 0,0 и меньше 1,0Возвращает следующее случайное число из последовательности(представленное в форме с плавающей точкой), которое будетбольше или равно числу 0,0 и меньше 1,0. Чтобы создать несимметричное или специализированное распределение, этот методнеобходимо переопределить а производном классеРассмотрим программу, в которой демонстрируется использование класса Randomпосредством создания парных результатов игры в кости:// Автоматизированная игра в кости.using System;c l a s s RandDice {public s t a t i c void Main() {Random ran = new Random();Console.Write(ran.Next(1, 7) + " " ) ;Console.WriteLine(ran.Next(1, 7 ) ) ;1Вот как выглядят результаты нашей "игры" в три хода:5 24 416Работа программы начинается с создания объекта класса Random.

Затем она запрашивает два случайных числа, которые находятся в диапазоне 1—6.Глава 19. Пространство имен System535- J Управлениепамятью и класс GCВ классе GC инкапсулировано С#-средство сбора мусора. Методы, определенные вэтом классе, представлены в табл. 19.15. В нем также определено следующее свойство,предназначенное только для чтенияpublic s t a t i cintMaxGeneration{ get;}Свойство MaxGeneration содержит номер поколения самой старой области выделенной памяти.

При каждом выделении памяти (т.е при использовании оператораnew) новой выделяемой области присваивается номер поколения, равный нулю Номера, соответствующие ранее выделенным областям памяти, при этом увеличиваются.Следовательно, свойство MaxGeneration означает номер области памяти, котораябыла выделена раньше других Наличие номеров поколений способствует повышениюэффективности процесса сбора мусора.В большинстве приложений программисты не пользуются возможностями классаGC. Но в отдельных случаях они могут оказаться весьма полезными Например, методC o l l e c t () позволяет выполнять сбор мусора в удобное для вас время.

Обычно этопроисходит в моменты, неизвестные вашей программе. Но поскольку процесс сборамусора занимает некоторое время, у вас могут быть вполне обоснованные причиныдля того, чтобы это не происходило при выполнении критических с точки зрениявремени задач, либо вы хотели бы для сбора мусора и других вспомогательных операций использовать вынужденные периоды ожидания (простоя).GC — это sealed-класс, т е он не может иметь потомковТаблица 19.15.

Методы, определенные в классе GCМетодОписаниеpublic s t a t i c void Collect()Инициализирует процесс сбора мусораИнициализирует процесс сбора мусора для областей памяти сpublic s t a t i c voidCollect (mt MaxGen)номерами поколений ОТ О ДО MaxGenpublic s t a t i c intGetGeneration(object o)Возвращает номер поколения для области памяти, на которуюссылается параметр оpublic s t a t i c intGetGeneration(WeakReference o)Возвращает номер поколения для области памяти, адресуемой"слабой" ссылкой, заданной параметром о Наличие "слабой"ссылки не защищает объект от угрозы подвергнуться проиессусбора мусораpublic s t a t i c longGetTotalMemory(boolВозвращает общий объем выделенной памяти (в байтах) итданный момент Если параметр collectравен значениюt r u e , до выдачи результата выполняется сбор мусораcollect)public s t a t i c voidKeepAlive(object o)Создает ссылку на объект о, тем самым защищая его от угрозыподвергнуться операции сбора мусораpublic s t a t i c voidReRegisterForFinalize(object o)Вызывает выполнение деструктора Этот метод аннулирует действие метода S u p p r e s s F m a l i z e ^)public static voidSuppressFinalize(object o)Препятствует выполнению деструктораpublic static voidWaitForPendmgFmalizers ()Прекращает выполнение вызывающего потока до тех пор, покане будут выполнены все незаконченные деструкторы536Часть II.

Библиотека С#- J Класс O b j e c tObject — это класс, который лежит в основе С#-типа object. Члены классаObject рассматривались в главе 11, но ввиду его центральной роли в С# (и радиудобства читателя) его методы снова приводятся в табл. 19.16. В классе Object определен один конструктор:Object ()Этот конструктор создает пустой объект.Таблица 19.16. Методы, определенные в классе ObjectМетодНазначениеp u b l i c v i r t u a l b o o l Equals (o b j e c t ob)Возвращает значение t r u e , если вызывающий объект являетсятаким же, как объект, адресуемый параметром ob. В противномслучае возвращает значение f a l s ep u b l i c s t a t i c bool Equals (ob j ect obi,o b j e c t ob2)Возвращает значение t r u e , если объект obi является такимже, как объект оЬ2. В противном случае возвращает значениеfalsep r o t e c t e d F i n a l i z e ()Выполняет завершающие действия перед процессом сбора мусора.

В С# метод F i n a l i z e () доступен через деструкторp u b l i c v i r t u a l i n t GetHashcode ()Возвращает хеш-код, связанный с вызывающим объектомp u b l i c Type GetType ()Получает тип объекта во время выполнения программыprotected objectMemberwisecione ()p u b l i c s t a t i c boolRef erenceEquals (object obi,o b j e c t ob2)Выполняет "поверхностное копирование" объекта, т.е. копируются члены, но не объекты, на которые ссылаются эти членыВозвращает значение true, если объекты obi и оЬ2 ссылаются на один и тот же объект. В противном случае возвращаетзначение f a l s epublic v i r t u a l s t r i n g TostringOВозвращает строку, которая описывает объектИнтерфейс IComparableВо многих классах необходимо реализовать интерфейс IComparable, поскольку онс помощью методов, определенных в С#-библиотеке, позволяет сравнить два объекта.Интерфейс IComparable легко реализовать, поскольку он состоит только из одногометода:i n t CompareTo(object v)Этот метод сравнивает вызывающий объект со значением параметра v.

Метод возвращает положительное число, если вызывающий объект больше объекта v, нуль, если два сравниваемых объекта равны, и отрицательное число, если вызывающий объект меньше объекта v.Глава 19. Пространство имен System537EJ Интерфейс I C o n v e r t i b l eИнтерфейс I C o n v e r t i b l e реализован всеми структурами нессылочных типов.

Онопределяет преобразование типов. Как правило, в создаваемых программистами классах этот интерфейс реализовать не нужно.Интерфейс ICloneableРеализуя интерфейс ICloneable, вы позволяете создавать копию объекта. В интерфейсе ICloneable определен только один метод:object Clone ()Этот метод создает копию вызывающего объекта. От того, как реализован методClone (), зависит вид создаваемой копии. Существует два вида копий: детальная иповерхностная.

При создании копии первого вида копия и оригинал совершенно независимы. Следовательно, если исходный объект содержит ссылку на другой объект О,то в результате детального копирования будет также создана копия объекта о. В поверхностной копии копируются члены, но не объекты, на которые ссылаются этичлены. Если объект ссылается на другой объект о, то по окончании поверхностногокопирования как копия, так и исходный объект будут ссылаться на один и тот жеобъект о, и любые изменения, вносимые в объект о, отразятся и на копии, и на оригинале. Обычно метод Clone () реализуется так, чтобы выполнялось детальное копирование.ПоверхностныекопииможносоздаватьспомощьюметодаMemberwiseClone (), который определен в классе Object.Рассмотрим пример, который иллюстрирует использование интерфейса ICloneable.В следующей программе создается класс Test, который содержит ссылку на класс X.В классе Test для создания детальной копии используется метод Clone ().// Демонстрация использования интерфейса I C l o n e a b l e .using System;class X {public int a;Jpublic X(int x) { a = x; }}class Test : ICloneable {public X o;public int b;public Test (int x, int y) {о = new X(x);b = y;}public void show(string name) {Console.Write("Значения объекта " + name + " : " ) ;Console.WriteLine("o.a: {0}, b: {1}", o.a, b ) ;538Часть II.

Библиотека С #// Создаем детальную копию вызывающего объекта,public object Clone() {Test temp = new Test(o.a, b ) ;return temp;class CloneDemo {public static void MainO {Test obi = new Test(10, 20);obi.show("obi") ;Console.WriteLine("Создаем объект оЬ2 как клон объекта obi.");Test ob2 * (Test) obi.Clone();ob2.show("ob2") ;Console.WriteLine("Заменяем член obi.о.а числом 99,+ "а член obl.b числом 88.");obi.о.а = 99;obl.b - 88;obi.show("obi");ob2.show("ob2");Результаты выполнения этой программы таковы:Значения объекта obi : о . а : 10, Ь: 20Создаем объект оЬ2 как клон объекта o b i .Значения объекта оЬ2 : о . а : 10, Ь: 20Заменяем член o b i . о . а числом 99, а член o b l .

b числомЗначения объекта obi : о . а : 99, Ь: 88Значения объекта оЬ2 : о . а : 10, Ь: 2088.Судя по приведенным результатам, объект оЬ2 является копией объекта obi, ноobi и оЬ2 — отдельные объекты. Изменение одного никак не отражается на другом.Это достигается за счет того, что для копии создается новый объект X, которому присваивается то же значение, которое имеет объект х в оригинале.Для реализации поверхностного копирования достаточно организовать внутри метода Clone () вызов метода MemberwiseClone (), определенного в классе Object.Попробуйте, например, изменить определение метода Clone () из предыдущей программы таким:// Создаем поверхностную копию вызывающего объекта,p u b l i c o b j e c t Clone() {Test temp = (Test) MemberwiseClone();r e t u r n temp;После внесения указанных изменений результаты выполнения той же программыбудут другими:Значения объекта obi : о.а: 10, Ь: 20Создаем объект оЬ2 как клон объекта obi.Значения объекта оЬ2 : о.а: 10, Ь: 20Заменяем член obi.о.а числом 99, а член obl.b числом 88.Глава 19.

Характеристики

Тип файла
PDF-файл
Размер
24,15 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее