* При перепечатке материалов ссылка на 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

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

Объектные модели
Создание элементов управления
Доступ к «плоским» файлам
Создание DataAdapter с помощью окна Server Explorer
Редактор файловой системы
Конструирование меню во время разработки
Перегрузка операторов в Visual C#
Рисование простых фигур
Создание формы
Лямбда-выражения
Структура .NET-приложений
Добавление элементов управления на панель Toolbox
Сокрытие членов базового класса в Visual C#
Классы и структуры
Разделяемые сборки
| .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


     



Rambler's Top100

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

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