Добавить в цитаты Настройки чтения

Страница 367 из 502

public static string ToString(byte[] value) - Преобразует байты из массива value в символьную строку. Строка содержит шестнадцатеричные значения, связанные с этими байтами и разделенные дефисами

public static string ToString(byte[] value, int startlndex) - Преобразует байты из массива value в символьную строку, начиная с элемента value[startindex]. Строка содержит шестнадцатеричные значения, связанные с этими байтами и разделенные дефисами

public static string ToString(byte[] value, int startlndex, int length) - Преобразует байты из массива value в символьную строку, начиная с элемента value [ startlndex] и включая число элементов, определяемых параметром length. Строка содержит шестнадцатеричные значения, связанные с этими байтами и разделенные дефисами

public static ushort ToUIntl6(byte[] value, int startlndex) - Преобразует два байта, начиная с элемента массива value [startlndex], в эквивалентное значение типа ushort и возвращает результат

public static uint ToUInt32(byte[] value, int startlndex) - Преобразует четыре байта, начиная с элемента массива value[startlndex], в эквивалентное значение типа uint и возвращает результат

public static ulong ToUInt64(byte[] value, int startlndex) - Преобразует восемь байтов, начиная с элемента массива value[startlndex], в эквивалентное значение типа ulong и возвращает результат

Генерирование случайных чисел средствами класса Random

Для генерирования последовательного ряда случайных чисел служит класс Random. Такие последовательности чисел оказываются полезными в самых разных ситуациях, включая имитационное моделирование. Начало последовательности случайных чисел определяется некоторым начальным числом, которое может задаваться автоматически или указываться явным образом.

В классе Random определяются два конструктора.

<b>public Random() </b>

<b>public Random(int seed) </b>

Первый конструктор создает объект типа Random, использующий системное время для определения начального числа. А во втором конструкторе используется начальное значение seed, задаваемое явным образом.

Методы, определенные в классе Random, перечислены в табл. 21.14.

Таблица 21.14. Методы, определенные в классе Random

Метод - Назначение

public virtual int Next() - Возвращает следующее случайное целое число, которое будет находиться в пределах от 0 до Int32.MaxValue-1 включительно

public virtual int Next(int maxValue) - Возвращает следующее случайное целое число, которое будет находиться в пределах от 0 до maxValue-1 включительно

public virtual int Next(int minValue, int maxValue) - Возвращает следующее случайное целое число, которое будет находиться в пределах от minValue до maxValue-1 включительно

public virtual void NextBytes(byte[] buffer) - Заполняет массив buffer последовательностью случайных целых чисел. Каждый байт в массиве будет находиться в пределах от 0 до Byte .MaxValue-1 включительно

public virtual double NextDouble() - Возвращает из последовательности следующее случайное число, которое представлено в форме с плавающей точкой, больше или равно 0,0 и меньше 1,0

protected virtual double Sample() - Возвращает из последовательности следующее случайное число, которое представлено в форме с плавающей точкой, больше или равно 0,0 и меньше 1,0. Для получения несимметричного или специального распределения случайных чисел этот метод необходимо переопределить в производном классе

Ниже приведена программа, в которой применение класса Random демонстрируется на примере создания компьютерного варианта пары игральных костей.

<b>// Компьютерный вариант пары игральных костей. </b>

<b>using System; </b>

<b>class RandDice { </b>

<b>  static void Main() { </b>

<b>    Random ran = new Random(); </b>

<b>    Console.Write(ran.Next(1, 7) + &quot; &quot;); </b>

<b>    Console.WriteLine(ran.Next(1, 7)); </b>

<b>  } </b>

<b>} </b>

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

<b>5 2 </b>

<b>4 4 </b>

<b>1 6 </b>

Сначала в этой программе создается объект класса 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, то сначала выполняется “сборка мусора”