В работе с коллекцией типа ArrayList
иногда требуется получить из ее содержимого обычный массив. Этой цели служит метод ТоАггау()
. Для преобразования коллекции в массив имеется несколько причин. Две из них таковы: потребность в ускорении обработки при выполнении некоторых операций и необходимость передавать массив методу, который не перегружается, чтобы принять коллекцию. Но независимо от конкретной причины коллекция типа ArrayList
преобразуется в обычный массив довольно просто, как показано в приведенном ниже примере программы.
// Преобразовать коллекцию типа ArrayList в обычный массив.
using System;
using System.Collections;
class ArrayListToArray {
static void Main() {
ArrayList al = new ArrayList();
// Добавить элементы в динамический массив,
al.Add(1);
al.Add(2);
al.Add(3);
al.Add(4) ;
Console.Write("Содержимое: ");
foreach(int i in al)
Console.Write(i + " ");
Console.WriteLine();
int[] ia = (int[])al.ToArray(typeof(int));
int sum = 0;
// Просуммировать элементы массива,
for(int i=0; i < ia.Length; i++) sum += ia[i];
Console.WriteLine("Сумма равна: " + sum);
}
}
Эта программа дает следующий результат.
Содержимое: 1 2 3 4
Сумма равна: 10
В начале этой программы создается коллекция целых чисел. Затем в ней вызывается метод ToArray()
с указанием типа int
получаемого массива. В итоге создается целочисленный массив. Но поскольку Array
является типом, возвращаемым методом ToArray()
, то содержимое получаемого в итоге массива должно быть приведено к типу int[]
. (Напомним, что Array
является базовым типом для всех массивов в С#.) И наконец, значения всех элементов массива суммируются.
Класс Hashtable
предназначен для создания коллекции, в которой для хранения ее элементов служит хеш-таблица. Как должно быть известно большинству читателей, информация сохраняется в Hashtable
реализуются интерфейсы IDictionary, ICollection, IEnumerable, ISerializable, IDeserializationCallback
и ICloneable
.
В классе Hashtable
определено немало конструкторов. Ниже приведены наиболее часто используемые конструкторы этого класса.
public Hashtable()
public Hashtable(IDictionary d)
public Hashtable(int capacity)
public Hashtable(int capacity, float loadFactor)
В первой форме создается создаваемый по умолчанию объект класса Hashtable
. Во второй форме создаваемый объект типа Hashtable
инициализируется элементами из коллекции d. В третьей форме создаваемый объект типа Hashtable
инициализируется, учитывая емкость коллекции, задаваемую параметром Hashtable
инициализируется, учитывая заданную емкость