* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Перебор элементов массивов и наборов
8 февраля 2009

В Visual Basic .NET и Visual C# имеется специальный синтаксис для перебора эле-
ментов массивов и наборов в цикле. Оператор For Each (foreach) позволяет пооче-
редно обработать все элементы массива или набора. Это делается следующим обра-
зом:
Visual Basic .NET
Dim myArrayO As Integer = {1,2,3,4,5}
Dim I As Integer
For Each I in myArray
MessageBox.Show(I.ToStringO)
Next
Visual C#
int[] myArray - new int[] {1,2.3,4,5};
foreach (int I in myArray)
{
MessageBox.Show(I.ToString());
}
При использовании такого синтаксиса с наборами у всех элементов набора дол-
жен быть тот же тип, что и у переменной цикла. Если в цикле обратиться к элемен-
ту набора, который невозможно записать в переменную цикла, генерируется ис-
ключение InvalidCastException. Во избежание подобных проблем при работе с набо-
рами, содержащими объекты разных типов, переменную цикла следует объявлять с
типом Object, а также проверять допустимость типа элемента набора с помощью
оператора typeof (Visual Basic .NET) или метода GetType (Visual C#):
Visual Basic .NET
1 Этот пример предполагает, что myList - это набор типа ArrayList,
' содержащий, помимо строк, объекты других типов.
Dim о as Object
For Each о in myList
If TypeOf о Is String Then
MessageBox. Show(o.ToStringO)
End If
Next
Visual C#
// Этот пример предполагает, что myList - это набор типа ArrayList,
// содержащий, помимо строк, объекты других типов,
foreach (object о in myList)
{
if (o.GetType() == typeof(string))
{
MessageBox. Show(o.ToStringO);
!
!
Важно отметить, что при использовании цикла For Each (foreach), ссылка на эле-
мент набора или массива, которая содержится в переменной цикла, доступна толь-
ко для чтения. Следовательно, этот цикл не позволяет модифицировать элементы
массивов и наборов. Чтобы получить возможность модифицировать элементы мас-
сива или набора при переборе их в цикле, следует использовать цикл For,..Next (for)
следующим образом:
Visual Basic .NET
Dim myArrayC) As Integer = {1,2,3,4,5}
Dim x As Integer
For x = 0 to myArray.GetUpperBound(O)
myArray(x) += 1
MessageBox.Show(myArray(x).ToString()3
Next
Visual C#
int[] myArray = new int[] {1,2,3,4,5};
for (int x = 0; x <= myArray.GetUpperBourd{0}; x++)
{
myArraytx] ++;
MessageBox.Show(myArray[x].ToString());
;
Резюме
• Константы и перечисления делают код более читабельным и устойчивым к
ошибкам, заменяя часто употребляемые значения понятными пользователю
именами. Константы определяют с помощью ключевого слова Const (const); для
объявления перечислений применяют ключевое слово Епит (епит). Константы
могут быть объявлены на основе любых типов данных, а перечисления — только
на основе целочисленных типов.
Массивы бывают одномерными и многомерными, последние в свою очередь
могут быть прямоугольными и невыровненными. Все измерения прямоугольно-
го массива составляют члены, образованные одинаковым числом элементов из
других измерений. Члены измерений невыровненного массива отличаются чис-
лом образующих их элементов из других измерений, В обоих случаях чем боль-
ше у массива измерений, тем он сложнее.
• Наборы позволяют работать с группами объектов одного или разных типов,
Классов наборов несколько, все они располагаются в пространстве имен System,
Collections. Класс System, CoIlections.ArrayList предоставляет основную функ-
циональность для работы с наборами, достаточную для решения типовых задач.
• Оператор For Each (foreach) позволяет перебирать значения элементов массива
или коллекции в цикле, но не позволяет модифицировать значения элементов.
Чтобы получить такую возможность, необходимо применить оператор For...Next
(for).

Теги: .NET

Статьи по теме:

Вызов функций Windows API
Изменение меню во время выполнения
Запись трассировочных данных в журнал событий
Установка сборок в виде компилированных образов
Отображение текста
Тестирование элемента управления
Создание класса строго типизированного набора на основе класса CollectionBase
Модель защиты, основанная на ролях
Рисование простых фигур
Перегрузка членов
Массивы
Члены типов CTS
Редактор пользовательского интерфейса
Примеси (mixin)
Структура .NET-приложений
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Перебор элементов массивов и наборов. Регион сайта: Москва и Санкт-Петербург