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
предназначен для создания коллекции, в которой для хранения ее элементов служит хеш-таблица. Как должно быть известно большинству читателей, информация сохраняется в хеш-таблице с помощью механизма, называемого хешированием. При хешировании для определения уникального значения, называемого хеш-кодом , используется информационное содержимое специального ключа. Полученный в итоге хеш-код служит в качестве индекса, по которому в таблице хранятся искомые данные, соответствующие заданному ключу. Преобразование ключа в хеш-код выполняется автоматически, и поэтому сам хеш-код вообще недоступен пользователю. Преимущество хеширования заключается в том, что оно обеспечивает постоянство времени выполнения операций поиска, извлечения и установки значений независимо от величины массивов данных. В классе 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
инициализируется, учитывая емкость коллекции, задаваемую параметром capacity. И в четвертой форме создаваемый объект типа Hashtable
инициализируется, учитывая заданную емкость capacity и коэффициент заполнения loadFactor. Коэффициент заполнения, иногда еще называемый коэффициентом загрузки, должен находиться в пределах от 0,1 до 1,0. Он определяет степень заполнения хеш-таблицы до увеличения ее размера. В частности, таблица расширяется, если количество элементов оказывается больше емкости таблицы, умноженной на коэффициент заполнения. В тех конструкторах, которые не принимают коэффициент заполнения в качестве параметра, этот коэффициент по умолчанию выбирается равным 1,0.
В классе Hashtable
определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов этого класса приведены в табл. 25.5. В частности, для того чтобы определить, содержится ли ключ в коллекции типа Hashtable
, вызывается метод ContainsKey()
. А для того чтобы выяснить, хранится ли в такой коллекции конкретное значение, вызывается метод ContainsValue()
. Для перечисления содержимого коллекции типа Hashtable
служит метод GetEnumerator()
, возвращающий объект типа IDictionaryEnumerator
. Напомним, что IDictionaryEnumerator
— это перечислитель, используемый для перечисления содержимого коллекции, в которой хранятся пары "ключ-значение".
Таблица 25.5. Наиболее часто используемые методы, определенные в классе Hashtable
Метод - Описание
public virtual bool ContainsKey(object key) - Возвращает логическое значение true,если в вызывающей коллекции типа Hashtableсодержится ключ key, а иначе — логическое значение false
public virtual bool ContainsValue(object value) - Возвращает логическое значение true,если в вызывающей коллекции типа Hashtableсодержится значение value , а иначе — логическое значение false
public virtual IDictionaryEnumerator GetEnumerator() -Возвращает для вызывающей коллекции типа Hashtableперечислитель типа IDictionaryEnumerator
public static Hashtable Synchronized(Hashtable table) - Возвращает синхронизированный вариант коллекции типа Hashtable,передаваемой в качестве параметра table
Читать дальше