CurrentCulture {get; }
public static StringComparer
Без учета регистра, но с учетом культур
CurrentCulturelgnoreCase {get; }
ной среды
public static StringComparer
С учетом регистра и безотносительно
InvariantCulture {get; }
к культурной среде
public static StringComparer
Без учета регистра и безотносительно
InvariantCulturelgnoreCase {get; }
к культурной среде
public static StringComparer Ordinal
Порядковое сравнение с учетом реги
{get; }
стра
public static StringComparer
Порядковое сравнение без учета реги
OrdinallgnoreCase {get; }
стра
Передавая явным образом экземпляр объекта типа StringComparer, можно совершенно однозначно определить порядок сортировки или поиска в массиве. Например, в приведенном фрагменте кода сортировка и поиск в массиве символьных строк осуществляется с помощью свойства StringComparer. Ordinal.
string[] strs = { "xyz", "one" , "beta", "Alpha" };
// ...
Array.Sort(strs, StringComparer.Ordinal);
int idx = Array.BinarySearch(strs, "beta", StringComparer.Ordinal) ;
Обращение содержимого массива
Иногда оказывается полезно обратить содержимое массива и, в частности, отсортировать по убывающей массив, отсортированный по нарастающей. Для такого обращения массива достаточно вызвать метод Reverse (). С его помощью можно обратить содержимое массива полностью или частично. Этот процесс демонстрируется в приведенной ниже программе.
// Обратить содержимое массива.
using System;
class ReverseDemo { static void Main() {
int[] nums = { 1, 2, 3, 4, 5 };
// Отобразить исходный порядок следования. Console.Write("Исходный порядок следования: ");
foreach(int i in nums)
Console.Write(i + " ");
Console.WriteLine ();
// Обратить весь массив.
Array.Reverse(nums);
// Отобразить обратный порядок следования.
Console.Write("Обратный порядок следования: "); foreach(int i in nums)
Console.Write (i + " ");
Console.WriteLine();
// Обратить часть массива.
Array.Reverse(nums, 1, 3);
// Отобразить обратный порядок следования.
Console.Write("Частично обращенный порядок следования: "); foreach(int i in nums)
Console.Write(i + " ");
Console.WriteLine();
}
}
Эта программа дает следующий результат.
Исходный порядок следования: 12 3 4 5 Обратный порядок следования: 5 4 3 2 1 Частично обращенный порядок следования: 5 2 3 4 1
Копирование массива
Полное или частичное копирование одного массива в другой — это еще одна весьма распространенная операция с массивами. Для копирования содержимого массива служит метод Сору (). В зависимости от его варианта копирование элементов исходного массива осуществляется в начало или в средину целевого массива. Применение метода Сору () демонстрируется в приведенном ниже примере программы.
// Скопировать массив. ^
using System;
class CopyDemo {
static void Main() {
int[] source ={1, 2, 3, 4, 5}; int[] target = { 11, 12, 13, 14, 15 }; int[] source2 = { -1, -2, -3, -4, -5 };
// Отобразить исходный массив.
Console.Write("Исходный массив: "); foreach(int i in source) •
Console.Write(i + " ");
Console.WriteLine ();
// Отобразить исходное содержимое целевого массива.
Console.Write("Исходное содержимое целевого массива: "); foreach(int i in target)
Console.Write(i,+ " ");
Console.WriteLine();
// Скопировать весь массив.
Array.Copy(source, target, source.Length);
// Отобразить копию.
Console.Write("Целевой массив после копирования: "); foreach(int i in target)
Console.Write(i + " ");
Console.WriteLine();
// Скопировать в средину целевого массива.
Array.Copy(source2, 2, target, 3, 2);
// Отобразить копию.
Console.Write("Целевой массив после частичного копирования: "); foreach(int i in target)
Console.Write(i + " ");
Console.WriteLine();
}
}
Выполнение этой программы дает следующий результат.
Исходный массив: 12 3 4 5
Исходное содержимое целевого массива: 11 12 13 14 15
Целевой массив после копирования: 12 3 4 5
Целевой массив после частичного копирования: 12 3-3-4
Применение предиката
Предикат представляет собой делегат типа System. Predicate, возвращающий логическое значение true или false в зависимости от некоторого условия. Он объявляется следующим образом.