Страница 357 из 502
public static bool TryParse(string s, out bool result) - Предпринимает попытку преобразовать символ из строки s в его эквивалентное значение типа bool. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true. Если же строка s не содержит ни поле Boolean. TrueString, ни поле Boolean. FalseString, то возвращается логическое значение false, независимо от того, какими буквами набрано содержимое строки: прописными или строчными, в отличие от метода Parse(), который генерирует исключение в аналогичной ситуации
Класс Array
Класс Array относится к числу наиболее часто используемых в пространстве имен System. Он является базовым классом для всех массивов в С#. Следовательно, его методы можно применять к массивам любого встроенного в C# типа или же к массивам определяемого пользователем типа. Свойства, определенные в классе Array, перечислены в табл. 21.11, а методы — в табл. 21.12.
В классе Array реализуются следующие интерфейсы: ICloneable, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable, а также IList. Все интерфейсы, кроме ICloneable, определены в пространстве имен System.Collections, подробнее рассматриваемом в главе 25.
В ряде методов данного класса используется параметр типа IComparer или IComparer<T>. Интерфейс IComparer находится в пространстве имен System.Collections. В нем определяется метод Compare() для сравнения значений двух объектов, как показано ниже.
<b>int Compare(object х, object у)</b>
Этот метод возвращает значение больше нуля, если х больше у; значение меньше нуля, если х меньше у; и, наконец, нулевое значение, если оба значения равны.
Интерфейс IComparer<T> находится в пространстве имен System.Collections.Generic. В нем определяется метод Compare(), общая форма которого приведена ниже.
<b>int Compare(Т х, Т у)</b>
Он действует таким же образом, как и его необобщенный аналог, возвращая значение больше нуля, если х больше у значение меньше нуля, если х меньше у и, наконец, нулевое значение, если оба значения равны. Преимущество интерфейса IComparer<T> заключается в том, что он обеспечивает типовую безопасность. Ведь в этом случае тип обрабатываемых данных указывается явным образрм, а следовательно, никакого приведения типов не требуется.
В последующих разделах демонстрируется ряд наиболее распространенных операций с массивами.
Таблица 21.11. Свойства, определенные в классе Array
Свойство - Назначение
public bool IsFixedSize { get; } - Доступно только для чтения. Принимает логическое значение true, если массив имеет фиксированный размер, и логическое значение false, если массив может изменять его динамически
public bool IsReadOnly { get; } - Доступно только для чтения. Принимает логическое значение true, если объект класса Array предназначен только для чтения, а иначе — логическое значение false. Для массивов это свойство всегда имеет логическое значение true
public bool IsSynchronized { get; } - Доступно только для чтения. Принимает логическое значение true, если массив можно безопасно использовать в многопоточной среде, а иначе — логическое значение false. Для массивов это свойство всегда имеет логическое значение true
public int Length { get; } - Доступно только для чтения. Имеет тип int и содержит количество элементов в массиве
public long LongLength { get; } - Доступно только для чтения. Имеет тип long и содержит количество элементов в массиве
public int Rank { get; } - Доступно только для чтения. Содержит размерность массива
public object SyncRoot { get; } - Доступно только для чтения. Содержит объект, предназначенный для синхронизации доступа к массиву
Таблица 21.12. Методы, определенные в классе Array
Метод - Назначение
public static ReadOnlyCollection<T> AsReadOnly<T>(Т[] array) - Возвращает доступную только для чтения коллекцию, которая включает в себя массив, определяемый параметром array
public static int BinarySearch(Array array, object value) - Осуществляет поиск значения value в массиве array. Возвращает индекс первого вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным
public static int BinarySearch<T>(T[] array, T value) - Осуществляет поиск значения value в массиве array. Возвращает индекс первого вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным
public static int BinarySearch(Array array, object value, IComparer comparer) - Осуществляет поиск значения value в массиве, определяемом параметром array, используя способ сравнения, задаваемый параметром comparer. Возвращает индекс первого вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным
public static int BinarySearch<T> (T[] array, T value, IComparer<T> comparer) - Осуществляет поиск значения value в массиве array, используя способ сравнения, задаваемый параметром comparer. Возвращает индекс первого вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным
public static int BinarySearch(Array array, int index, int length, object value) - Осуществляет поиск значения value в части массива array. Поиск начинается с индекса, задаваемого параметром index, и охватывает число элементов, определяемых параметром length. Возвращает индекс первого вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным
public static int BinarySearch<T>(T[] array, int index, int length, T value) - Осуществляет поиск значения value в части массива array. Поиск начинается с индекса, задаваемого параметром index, и охватывает число элементов, определяемых параметром length. Возвращает индекс первого вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным