- •Лабораторная работа №4. Работа с массивами в c# Задание 1. Класс Array
- •Задание 2. Массивы как коллекции. Статические методы класса Array.
- •Задание 3. Класс Object и массивы
- •Задание 4. Массивы Объектов.
- •Задание 5. Приведение типов массивов.
- •Задание 6. Описание класса массива
- •Контрольные вопросы
- •Выполнение лабораторной работы
- •Дополнительные баллы начисляются в сумму выполненной работы, но только в случае своевременного выполнения!!!
Задание 3. Класс Object и массивы
Подведем некоторые итоги:
Свойства класса Array |
|||
Свойство |
Родитель |
Описание |
|
IsFixedSize |
Интерфейс IList |
True, если массив статический |
|
IsReadOnly |
Интерфейс IList |
Для всех массивов имеет значение false |
|
IsSynchronized |
Интерфейс ICollection |
True или False, в зависимости от того, установлена ли синхронизация доступа для массива |
|
SyncRoot |
Интерфейс ICollection |
Собственный метод синхронизации доступа к массиву. При работе с массивом его можно закрыть на время обработки, что запрещает его модификацию каким-либо потоком: Array myCol = new int[]; lock( myCol.SyncRoot ) { foreach ( Object item in myCol ) { // безопасная обработка массива } |
|
Length |
|
Число элементов массива |
|
Rank |
|
Размерность массива |
|
Статические методы класса Array |
|||
Метод |
Описание |
||
BinarySearch |
Двоичный поиск. Описание и примеры даны в тексте |
||
Clear |
Выполняет начальную инициализацию элементов. В зависимости от типа элементов устанавливает значение 0 для арифметического типа, false - для логического типа, Null для ссылок, "" - для строк. |
||
Copy |
Копирование части или всего массива в другой массив. Описание и примеры даны в тексте |
||
CreateInstance |
Класс Array, в отличие от многих классов, может создавать свои экземпляры не только с помощью конструктора new, но и при вызове метода CreateInstance: Array my2Dar = Array.CreateInstance(typeof(double), 2,2) |
||
IndexOf |
Индекс первого вхождения образца в массив. |
||
LastIndexOf |
Индекс последнего вхождения образца в массив. |
||
Reverse |
Обращение одномерного массива. |
||
Sort |
Сортировка массива. |
Динамические методы класса Array
Метод |
Родитель |
Описание |
Equals |
Класс Object |
Описание и примеры даны в предыдущих главах. |
GetHashCode |
Класс Object |
Описание и примеры даны в предыдущих главах. |
GetType |
Класс Object |
Описание и примеры даны в предыдущих главах. |
ToString |
Класс Object |
Описание и примеры даны в предыдущих главах. |
Clone |
Интерфейс ICloneable |
Позволяет создать плоскую или глубокую копию массива. В первом случае создаются только элементы первого уровня, а ссылки указывают на те же самые объекты. Во втором случае копируются объекты на всех уровнях. Для массивов создается только плоская копия. |
CopyTo |
Интерфейс ICollection |
Копируются все элементы одномерного массива в другой одномерный массив, начиная с заданного индекса: col1.CopyTo(col2,0); |
GetEnumerator |
Интерфейс IEnumerable |
Стоит за спиной цикла foreach |
GetLength |
|
Возвращает число элементов массива по указанному измерению. Описание и примеры даны в тексте главы. |
GetLowerBound, GetUpperBound |
|
Возвращает нижнюю и верхнюю границу по указанному измерению. Для массивов нижняя граница всегда равна нулю. |
GetValue, SetValue |
|
Возвращает или устанавливает значение элемента массива с указанными индексами. |
Initialize |
|
Может быть применен только к массивам значимого типа. Инициализирует элементы, вызывая соответствующий конструктор. Как правило, не используется в обычных программах. |
Приведите пример показывающий отличие между возвращаемым значением метода GetLength и свойством Length.
Напишите функцию печати массива, принимающую в качестве параметра объект типа Object.