Имя Пароль
Зарегистрироваться


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

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

Сокрытие членов базового класса в Visual C#
Создание обработчика для группы событий
Оптимизация средствами компилятора
Реализация членов интерфейса на Visual C#
Применение методов формы
Применение переменных ссылочных типов
Свойства, доступные только для чтения или только для записи
Создание класса строго типизированного набора на основе класса CollectionBase
Создание производных элементов управления
Перегрузка операторов в Visual C#
Архитектура данных ADO.NET
Managed Control Panel Items
Принципы разработки пользовательского интерфейса
Тестирование элемента управления
Отладка элементов управления
| .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 | Перебор элементов массивов и наборов. Регион сайта: Москва и Санкт-Петербург