Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 144
Текст из файла (страница 144)
Первое отрицательное значение: -1 В данном примере программы в качестве предиката методам Ех1яся () и Гупб () передается метод 1янед О. Обратите внимание на следующее объявление метода 1янед (): ясас1с Ьоо1 1яиед(ьпс ч) ( Методы ех1яся () и Г1пб () автоматически и по порядку передают элементы массива переменной и Следовательно, после каждого вызова метода тямед () переменная будет содержать следующий элемент массива.
Применение делегата Ас~хоп Делегат Асгуоп применяется в методе Аггау. ГогЕас)т () для выполнения заданного действия над каждым элементом массива, Существуют разные формы делегата йсг1оп, отличающиеся числом параметров типа. Ниже приведена одна из таких форм. рцо11с бе1едасе чо1б Ьсгуоп<Т> (т оьу) В этой форме объект, над которым должно выполняться действие, передается в качестве параметра оЬ~. Когда же эта форма делегата йссуоп применяется в методе Аггау.уогнас)т(), то каждый ЭлЕмеНт МаСсИВа ПЕРедается по поРяДку объекту оЬтй Следовательно, используя делегат АСС1оп и метод ГогЕасй (), можно в одном операторе выполнить заданную операцию над целым массивом.
В приведенном ниже примере программы демонстрируется применение делегата )(сс1оп и метода Гогнас)т () . Сначала в ней создается массив объектов класса мус1аяя, а затем используется метод Б)тон() для отображения значений, извлекаемых из этого массива. Далее эти значения делаются отрицательными с помощью метода Мед () .
И наконец, метод 5) оы () используется еще раз для отображения значений, сделанных отрицательными. Все эти операции выполняются посредством вызовов метода ГогЕас)т () . О Продемонстрировать применение делегата Лссуоп. пввпд Яуягещт с1аяя МуС1аяв ( рцб11с 1пг 19 рцю11с МУС1аяя(1пс х) ( 1 = хт ) с1аяя йсгуопэещо ( !У Метод делегата Асгвоп, отображающий значение, которое ему передается. 734 часть П. Библиотека С» ясасас чокб Яьоы(МуС1азя о) ( Сопяо1е.иггсе(о.1 т " ") т ) // Еще один метод делегата Ассаоп, делавщий // отрицательным значение, которое ему передается.
ягагас чоьб иед(мус1аяя о) ( о ° ]. = о ° 1' ] ясасас чоьб Магп() ( МуС1аяя(] пцвя = пен МуС1аяя[5]) Сопяо1е.Итаке("Содержимое массива пцвя: ")) // Выполнить действие для отображения значений. Аггау.гогеасп(пцвз, Асгаоппево.звон)т Сопзо1е.Игасевцпе() // Выполнить действие для отрицания значений.
Актау.тогкасп(пцвя, Асс1опвево.нес)т Сопяо1е.нгасе("Содержимое массива пцвя после отрицания: ") // Выполнить действие для повторного отображения // значений. Актау.тогкась(пцвя, Ассгопвево.зпон)т Сопяо1е.Игасеввпе() Ниже приведен результат выполнения этой программы. Содержимое массива пцвя: 5 2 3 4 1 Содержимое массива пцвя после отрицания: -5 -2 -3 -4 -1 КлаСС В~ ~Сопчег~ех В программировании нередко требуется преобразовать встроенный тип данных в массив байтов. Допустим, что на некоторое устройство требуется отправить целое значение, но сделать это нужно отдельными байтами, передаваемыми по очереди. Часто возникает и обратная ситуация, когда данные получаются из устройства в виде упорядоченной последовательности байтов, которые требуется преобразовать в один из встроенных типов.
Для подобных преобразований в среде .]к]ЕТ предусмотрен отдельный класс ВЕГСопчегсег, пцвя [0] пцвя [1] пцвя [2] пцвя [3] ловя[4] пен МуС1аяя(5)) пен МуС1аяя(2)т пеи МуС1ааз(3)т пеи муС1аая(4)т пеи муС1аяя(1); Глава 2!. Пространство имен Зув(еп) 735 рпЫус явакгс геааоп1у Ьоо1 тяьгСС1еЕпа1ап Это поле принимает логическое значение сгце, если в текущей среде сначала сохраняется младший байт слова, а затем старший. Это так называемый формат с прямым порядком байтов, А если в текущей среде сначала сохраняется старший байт слова, а затем младший, то поле 1яВВСС1екпб1ап принимает логическое значение ба1яе.
Это так называемый формат с обратимым порядком байтов. В компьютерах с процессором !псе! Репбшп используется формат с прямым порядком байтов. ваблмца 21.13. Методы, определенные в классе вассоптгеккек Назначение рпЫвс якавгс 1опс ОопЫетотпСЕВВ1Ся (с(ппЫв ) Преобразует значение к в целочисленное значение типа 1опд и возвращает результат Преобразует значение я в однобайтовый массив и возвращает результат Преобразует значение г в двухбайтовый массив и возвращает результат Преобразует значение к в восьмибайтовый массив и возвращает результат Преобразует значение ч в четырехбайтовый мас- сив и возвращает результат Преобразует значение г в четырехбайтовый мас- сив и возвращает результат Преобразует значение г в восьмибайтовый массив и возвращает результат Преобразует значение к в двухбайтовый массив и возвращает результат Преобразует значение г в четырехбайтовый мас- сив и возвращает результат Преобразует значение г в восьмибайтовый массив и возвращает результат Преобразует значение ч в двухбайтовый массив и возвращает результат Преобразует значение к в значение типа СоиЫе и возвращает результат Преобразует байт из элемента массива, указывае- мого по индексу я (1сх ], в эквивалентное значе- ние типа ьоо1 и возвращает результат.
Ненулевое значение преобразуется в логическое значение сгпе, а нулевое — в логическое значение гя1яе Преобразует два байта, начиная с элемента мас- сива а [я сакс], в эквивалентное значение типа сья г и возвращает результат Преобразует восемь байтов, начиная с элемента массива а (ясягс], в эквивалентное значение типа с(опЫе и возвращает результат риЫ1с яСаквс Ьуке(! беСВукея(Ьоо1 г) рпЫ1с ягаС1с Ьуке(] беСВуСея(снят к) рпЫ1с якавгс Ьупе (] беСВувея (с(опЫе ч) рпЫгс якаквс Ьуке[) беСВукея (Е1оаС г) 1 рпЫгс ятаквс Ьуве(] беСВукея(тпС к) рпЫгс якаквс ЬуСе (! беСВувея (1ппд к) рпЫ1с яСаС1с Ьуке[] беСВуСея(япогС к) рпЫ1с яСаСус Ьупе(] беСВукея(пгпС к) рпЫгс якавгс Ьуке[] беСВувея (шопа ч) рпЫгс якакгс Ьуке [] беСВукея (пяногС г) рпЫгс ясасвс г(опЫе тпкбяВ1СятопопЫе (1опп г) рпЫзс якаС1с Ьоо1 ТЬВоо1еап(ЬуСе[] я, (шс 1дх) рпЫ1с якякгс снап Тосьаг(Ьуке(! а, хпс ясагс) рпЫ1с япаквс СопЫе ТоропЫе(Ьуве(] а, впС ягагг) Класс В1ССопчеггег является статическим, Он содержит методы, приведенные в табл.
21.13. Кроме того, в ием определено поле 736 Часть П. Библиотека СЗ О е аалг).(З Назначение риЫ1с ясакгс япогС ТоТпС16(Ьуие[) а, гпс ягагс) Преобразует два байта, начиная с элемента мас- сива я [я сегс), в эквивалентное значение типа я ног с и возвращает результат Преобразует четыре байта, начиная с элемента массива а [ясагс], в эквивалентное значение тИПа сп С И ВОЭВращавт рвэуЛЬтат Преобразует восемь байтов, начиная с элемента массива я [я сегс), в эквивалентное значение типа 1опп и возвращает результат Преобразует четыре байта, начиная с элемента массива я (ясагс), в эквивалентное значение типа 11оя с и возвращает результат Преобразует байты из массива я в строку.
Строка содержит шестнадцатеричные значения, связан- ные с этими байтами и разделенные дефисами Преобразует байты из массива я в строку, начиная с элемента а[ясягс]. Строкасодержитшестнад- цатеричные значения, связанные с этими байтами и разделенные дефисами Преобразует байты нз массива я в строку, начиная с элемента я ( я с а г с] и включая число элементов, определяемьж параметром соил с. Строка со- держит шестнадцатеричные значения, связанные с этими байтами и разделенные дефисами Преобразует два байта, начиная с элемента мас- сива а ( я с ягс], в эквиваленпюе значение типа ияьогс и возвращает результат Преобразует четыре байта, начиная с элемента массива я (ясягс], в эквивалентное значение типа и 1 и с и возвращает результат Преобразует восемь байтов, начиная с элемента массива а (я с ягс), в эквивалентное значение типа и1опо и возвращает рвзультат риЫсс яСаС1с гпС То1пС32(Ьуке(] я, 1пс ясагс) риЫ1с якаС1с 1опп То1пС64(ЬуСе[) а, гпс ясягс) риыгс ясассс 11оас тояспп1е(ьусе(] я, спг ягагС) риыгс ясас1с ясг1пп тоясг1пд(ьусе[] а) риЫсс якаггс якг1пд ТОЯСг1пе(ЬУСе(] а, спг ягагС) риЫсс яиаисс якгспд ТЬЯСг1пд(Ьуке[] а, спС яСагС, спг соилС) риЫсс якакгс ияьогС ТоитпС16(Ьуке[] а, Тпк яСягС) риЫТс якаС1с и1пС Тои1пС32(Ьуге() я, 1пг ягагС) риЫсс якаксс и1опи Тоц1пС64(Ьуке(] я, гпс ясагс) Генерирование случайных чисел средствами класса капков риЫсс Капсож() риЫ1с Напс(оп(1пС яеес() Для генерирования последовательного ряда случайных чисел служит класс палс)опс Такие последовательности чисел оказываются полезными в самых разных ситуациях, включая имитационное моделирование.
Начало последовательности случайных чисел определяется некоторым начальным числом, которое может задаваться автоматически нлн указываться явным образом. В классе Нвпс(ою определяются два конструктора: Глава 21. Пространство имен Зуз1ев 73г Первый конструктор создает объект типа напг)св, использующий системное время для определения начального числа. А во втором конструкторе используется начальное значение веег), задаваемое явным образом.
Методы, определенные в классе напс(св, перечислены в табл. 21.14. Таблица 21.14. Методы, определенные в классе кап((ош Назначение Метод рсЫтс ттгтиа1 тпг Нехг () Возвращает следующее случайное целое число, ко- тОрОЕ будЕт НаХОдИтЬСя В ПрЕдЕЛаХ От 0 дО тпг32. Махча1се-1 включитЕльно рсЫ1с г1гтса1 1пт Нехт (ьпт сррегвсопгй Возвращает следующее случайное целое чис- ло, которое будет находиться в пределах от 0 до иррегвсипа'-1 включительно риЫ1с т1ггца1 тпт Нехк (1пт 1сыегВоспг), 1пг иррегВсильб Возвращает следующее случайное целое число, ко- торое будет находиться в пределах от 1с тгВсипг( до сррегвсипг(-1 включительно риЫ1с т1гтоа1 гога НехСВутев (Ьуте () Ьиу) ЗаПОЛНяЕт буфЕр Ьсу ПОСЛЕдОВатЕЛЬНОСтЬЮ СЛу- чайных целых чисел.