Int Compare(object х, object у)

Этот метод возвращает значение больше нуля, если х больше у; значение меньше нуля, если х меньше у; и, наконец, нулевое значение, если оба значения равны.

Интерфейс IComparer<T> находится в пространстве имен System. Collections . Generic. В нем определяется метод Compare (), общая форма которого приведена ниже.

Int Compare(Т х, Т у)

Он действует таким же образом, как и его необобщенный аналог, возвращая значение больше нуля, если х больше у значение меньше нуля, если х меньше у и, наконец, нулевое значение, если оба значения равны. Преимущество интерфейса IComparer<T> заключается в том, что он обеспечивает типовую безопасность. Ведь в этом случае тип обрабатываемых данных указывается явным образрм, а следовательно, никакого приведения типов не требуется.

В последующих разделах демонстрируется ряд наиболее распространенных операций с массивами.

Таблица 21.11. Свойства, определенные в классе Array

 

Свойство

 

Назначение

 

public bool IsFixedSize { get; }

public bool IsReadOnly { get; }

public bool

IsSynchronized { get; }

 

Доступно только для чтения. Принимает логическое значение true, если массив имеет фиксированный размер, и логическое значение false, если массив может изменять его динамически

Доступно только для чтения. Принимает логическое значение true, если объект класса Array предназначен только для чтения, а иначе — логическое значение false. Для массивов это свойство всегда имеет логическое значение true Доступно только для чтения. Принимает логическое значение true, если массив можно безопасно использовать в многопоточной среде, а иначе — логическое значение false. Для массивов это свойство всегда имеет логическое значение true

 

Свойство

 

Назначение '

 

public int Length {

 

Доступно только для чтения. Имеет тип int и содержит ко

 

get; }

 

личество элементов в массиве

 

Public long LongLength

 

Доступно только для чтения. Имеет тип long и содержит

 

{ get; }

 

количество элементов в массиве

 

public int Rank { get; }

 

Доступно только для чтения. Содержит размерность массива

 

Public object SyncRoot

 

Доступно только для чтения. Содержит объект, предназна

 

{ get; }

 

ченный для синхронизации доступа к массиву

 

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

 

Метод

 

Назначение

 

Public static

 

Возвращает доступную только для чтения коллек

 

ReadOnlyCollection<T>

 

цию, которая включает в себя массив, определяе

 

AsReadOnly<T>(Т [] array)

 

мый параметром array

 

Public static int

 

Осуществляет поиск значения value в массиве

 

BinarySearch(Array

 

array,

 

array. Возвращает индекс первого вхождения

 

object value)

 

искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным

 

Public static int

 

Осуществляет поиск значения value в массиве

 

BinarySearch<T>(T[]

 

array,

 

array. Возвращает индекс первого вхождения

 

T value)

 

искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным

 

Public static int

 

Осуществляет поиск значения value в масси

 

BinarySearch(Array

 

array,

 

ве, определяемом параметром array , исполь

 

object value, IComparer

 

зуя способ сравнения, задаваемый параметром

 

comparer)

 

comparer. Возвращает индекс первого вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным

 

Public static int

 

Осуществляет поиск значения value в массиве

 

BinarySearch<T> (T [ ]

 

array,

 

array , используя способ сравнения, задаваемый

 

T value, IComparer<T>

 

параметром comparer. Возвращает индекс перво

 

comparer)

 

го вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным

 

Public static int

 

Осуществляет поиск значения value в части мас

 

BinarySearch(Array

 

array,

 

сива array. Поиск начинается с индекса, зада

 

int index, int length,

 

ваемого параметром index , и охватывает число

 

object value)

 

элементов, определяемых параметром length. Возвращает индекс первого вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным

 

Метод

 

Назначение

 

public static int

 

Осуществляет поиск значения value в части мас

 

BinarySearch<T>(T[] array,

 

сива array. Поиск начинается с индекса, зада

 

int index, int length, T

 

ваемого параметром index , и охватывает число

 

value)

 

элементов, определяемых параметром length. Возвращает индекс первого вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным

 

public static int

 

Осуществляет поиск значения value в части мас

 

BinarySearch(Array array,

 

сива array , используя способ сравнения, опреде

 

int index, int length,

 

ляемый параметром comparer. Поиск начинается

 

object value, IComparer

 

с индекса, задаваемого параметром index, и охва

 

comparer)

 

тывает число элементов, определяемых параметром length. Возвращает индекс первого вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным

 

public static int

 

Осуществляет поиск значения value в части мас

 

BinarySearch<T>(T [] array,

 

сива array , используя способ сравнения, опреде

 

int index, int length,

 

ляемый параметром comparer. Поиск начинается

 

T value, Icomparer<T>

 

с индекса, задаваемого параметром index , и охва

 

comparer)

 

тывает число элементов, определяемых параметром length. Возвращает индекс первого вхождения искомого значения. Если оно не найдено, возвращает отрицательное значение. Массив array должен быть отсортированным и одномерным

 

public static void

 

Устанавливает заданные элементы массива array

 

Clear(Array array, int

 

равными нулю, пустому значению null или логи

 

index, int length)

 

ческому значению false в зависимости оттипэ элемента: значения, ссылочного или логического. Подмножество элементов, подлежащих обнулению, начинается с индекса, задаваемого параметром index , и включает в себя число элементов, определяемых параметром length

 

public object Clone ()

 

Возвращает копию вызывающего массива. Эта копия ссылается на те же элементы, что и оригинал, поэтому она называется “неполной". Таким образом, изменения, вносимые в элементы, влияют на оба массива, поскольку и в том и в другом используются одни и те же элементы

 

public static void

 

Копирует число элементов, задаваемых па

 

ConstrainedCopy(Array

 

раметром length, из исходного массива

 

sourceArray, int sourcelndex,

 

sourceArray, начиная с элемента, указывае

 

Array destinationArray, int

 

мого по индексу sourcelndex, в целевой мас

 

destinationlndex, int length)

 

сив destinationArray, начиная с элемента,

 

_ Продолжение табл. 21.12

 

Метод

 

Назначение

 

указываемого по индексу destinationlndex. Если

 

оба массива имеют одинаковый ссылочный тип, то метод ConstrainedCopy () создает “неполную копию", в результате чего оба массива будут ссылаться на одни и те же элементы. Если же во время копирования возникает ошибка, то содержимое целевого массива destinationAr ray остается прежним

 

public static TTo [ ]

 

Преобразует массив array из типа Tlnput в тип

 

ConvertА11<ТInput,

 

TOutput и возвращает получающийся в итоге

 

TTo>(TFrom[] array,

 

массив. Исходный массив остается прежним. Пре

 

Converter<TOutput, TTo>

 

образование выполняется преобразователем, за

 

converter)

 

даваемым параметром converter

 

public static void

 

Копирует число элементов, задаваемых параметром

 

Copy(Array sourceArray,

 

length, из исходного массива sourceArray в це

 

Array destinationArray,

 

int

 

левой массив destinationArray , начиная с пер

 

length)

 

вого элемента массива. Если оба массива имеют одинаковый ссылочный тип, то метод Сору () создает “неполную копию", в результате чего оба массива будут ссылаться на одни и те же элементы. Если же во время копирования возникает ошибка, то содержимое целевого массива destinationArray оказывается неопределенным

 

public static void

 

Копирует число элементов, задаваемых параметром

 

Copy(Array sourceArray ,

 

length , из исходного массива sourceArray в це

 

Array destinationArray ,

 

long

 

левой массив destinationArray , начиная с пер

 

length)

 

вого элемента массива. Если оба массива имеют одинаковый ссылочный тип, то метод Сору () создает “неполную копию”, в результате чего оба массива будут ссылаться на одни и те же элементы. Если же во время копирования возникает ошибка, то содержимое целевого массива destinationArray оказывается неопределенным

 

public static void

 

Копирует число элементов, задаваемых параме

 

Copy(Array sourceArray ,

 

тром length , из исходного массива sourceArray ,

 

int sourcelndex, Array

 

начиная с элемента, указываемого по индексу

 

destinationArray ,int

 

sourceArray [ sourcelndex] , в целевой массив

 

destinationlndex, int

 

destinationArray , начиная с элемента, указы

 

length)

 

ваемого по индексу destinationAr ray [destinationlndex] .Если оба массива имеют одинаковый ссылочный тип, то метод Сору () создает “неполную копию”, в результате чего оба массива будут ссылаться на одни и те же элементы. Если же во время копирования возникает ошибка, то содержимое целевого массива destinationArray оказывается неопределенным

 

Метод

 

Назначение

 

public static void

 

Копирует число элементов, задаваемых параме

 

Copy(Array sourceArray ,

 

тром length, из исходного массива sourceArray,

 

long sourcelndex, Array

 

начиная с элемента, указываемого по индексу

 

destinationArray ,long

 

sourceArray [source Index] ,в целевой массив

 

destinationlndex, long

 

destinationArray, начиная с элемента, указы

 

length)

 

ваемого по индексу destinationArray [destinationlndex] .Если оба массива имеют одинаковый ссылочный тип, то метод Сору () создает “неполную копию”, в результате чего оба массива будут ссылаться на одни и те же элементы. Если же во время копирования возникает ошибка, то содержимое целевого массива destinationArray оказывается неопределенным

 

public void CopyTo(Array

 

Копирует элементы вызывающего массива в це

 

array ,int index)

 

левой массив array , начиная с элемента, указываемого по индексу array [index] . Если же во время копирования возникает ошибка, то содержимое целевого массива array оказывается неопределенным

 

public void CopyTo(Array

 

Копирует элементы вызывающего массива в це

 

array ,long index)

 

левой массив array, начиная с элемента, указываемого по индексу array [index] . Если же во время копирования возникает ошибка, то содержимое целевого массива array оказывается неопределенным

 

public static Array

 

Возвращает ссылку на одномерный массив, кото

 

Createlnstance(Type

 

рый содержит число элементов типа elementType,

 

elementType, int length)

 

определяемое параметром length

 

public static Array

 

Возвращает ссылку на двумерный массив разме

 

Createlnstance(Type

 

ром lengthl*length2. Каждый элемент этого

 

elementType, int lengthl,

 

массива имеет тип elementType

 

int length2)

 

public static Array

 

^ Возвращает ссылку на трехмерный массив разме

 

Createlnstance(Type

 

ром lengthl* length2* length3. Каждый эле

 

elementType, int lengthl,

 

мент этого массива имеет тип elementType

 

int length2, int length3)

 

public static Array

 

Возвращает ссылку на многомерный массив, раз

 

Createlnstance(Type

 

мерность которого задается в массиве lengths.

 

elementType, params int[]

 

Каждый элемент этого массива имеет тип

 

lengths)

 

elementType

 

public static Array

 

Возвращает ссылку на многомерный массив, раз

 

Createlnstance(Type

 

мерность которого задается в массиве lengths.

 

elementType, params long[]

 

Каждый элемент этого массива имеет тип

 

lengths)

 

elementType

 

_ Продолжение табл. 21.12

 

Метод

 

Назначение

 

Public static Array

 

Возвращает ссылку на многомерный массив, раз

 

Createlnstance(Type

 

мерность которого задается в массиве lengths.

 

elementType, int []lengths,

 

Каждый элемент этого массива имеет тип

 

int[] lowerBounds)

 

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

 

Public static bool

 

Возвращает логическое значение true, если мас

 

Exists<T>(T[] array,

 

сив array содержит хотя бы один элемент, удо

 

Predicate<T> match)

 

влетворяющий условию предиката, задаваемого параметром match , а иначе возвращает логическое значение false

 

public static T Find<T>(T[]

 

Возвращает первый элемент массива array , удо

 

array , Predicate<T> match)

 

влетворяющий условию предиката, задаваемого параметром’ match, а иначе возвращает значение типа default (Т)

 

public static T[]

 

Возвращает все элементы массива array, удо

 

FindAll<T>(T[] array,

 

влетворяющие условию предиката, задаваемого

 

Predicate<T> match)

 

параметром match, а иначе возвращает массив нулевой длины

 

Public static int

 

Возвращает индекс первого элемента массива

 

FindIndex<T>(T[] array,

 

array, удовлетворяющего условию предиката, за

 

Predicate<T> match)

 

даваемого параметром match, иначе возвращает значение -1

 

Public static int

 

Возвращает индекс первого элемента масси

 

FindIndex<T>(T[] array, int

 

ва array, удовлетворяющего убловию предика

 

startlndex, Predicate<T>

 

та, задаваемого параметром match. Поиск на

 

match)

 

чинается с элемента, указываемого по индексу array [ start Index] .Если ни один из элементов, удовлетворяющих данному условию, не найден, то возвращается значение -1

 

Public static int

 

Возвращает индекс первого элемента масси

 

FindIndex<T>(T[] array,

 

ва array, удовлетворяющего условию предика

 

int startlndex, int count,

 

та, задаваемого параметром match. Поиск на

 

Predicate<T> match)

 

чинается с элемента, указываемого по индексу array [startlndex] ,и продолжается среди числа элементов, определяемых параметром count. Если ни один из элементов, удовлетворяющих данному условию, не найден, то возвращается значение -1

 

Public static T

 

Возвращает последний элемент массива array,

 

FindLast<T>(T[] array,

 

удовлетворяющий условию предиката, задаваемо

 

Predicate<T> match)

 

го параметром match, иначе возвращает значение типа default (Т)

 

Метод

 

Назначение

 

Public static int

 

Возвращает индекс последнего элемента массива

 

FindLastIndex<T>(T []

 

array,

 

array, удовлетворяющего условию предиката, за

 

. Predicate<T> match )

 

даваемого параметром match, иначе возвращает значение -1

 

Public static int

 

Возвращает индекс последнего элемента массива

 

FindLastIndex<T>(T []

 

array,

 

array , удовлетворяющего условию предиката, за

 

int startlndex, Predicate<T>

 

даваемого параметром match. Поиск начинается

 

match)

 

в обратном порядке с элемента, указываемого по индексу array [startlndex] , и оканчивается на элементе array [ 0].Если ни один из элементов, удовлетворяющих данному условию, не найден, то возвращается значение -1

 

Public static int

 

Возвращает индекс последнего элемента массива

 

FindLastIndex<T>(T []

 

array,

 

array , удовлетворяющего условию предиката, за

 

int startlndex , int

 

count,

 

даваемого параметром v.Поиск начинается в об

 

Predicate<T> match)

 

ратном порядке с элемента, указываемого по индексу array[start] , и продолжается среди числа элементов, определяемых параметром count. Если ни один из элементов, удовлетворяющих данному условию, не найден, то возвращается значение -1

 

Public static void

 

Применяет метод, задаваемый параметром

 

ForEach<T>(T[] array,

 

action , к каждому элементу массива array

 

Action<T> action)

 

Public IEnumerator

 

Возвращает перечислительный объект для масси

 

GetEnumerator ()

 

ва. Перечислители позволяют опрашивать массив в цикле. Боле подробно перечислители описываются в главе 25

 

Public override int

 

Возвращает хеш-код для вызывающего объекта

 

GetHashCode ()

 

Public int GetLength(int

 

Возвращает длину заданного измерения массива.

 

dimension)

 

Отсчет измерений начинается с нуля, поэтому для получения длины первого измерения необходимо передать данному методу значение 0 параметра dimension , для получения длины второго измерения — значение 1 и т.д.