Рейтинг - 5.0 (1)

Всем привет! Мы продолжаем изучать блочные конструкции, и на этот раз я хотел бы рассказать ещё об одном виде циклов - foreach. Как я уже говорил в предыдущих уроках, переводится название как "Для каждого". По функционалу он очень поход на цикл "Для"(for), но отличается тем, что у него явно не указывается счётчик. Счётчиком выступает элемент какой-то коллекции, в этом предназначение. Как привило этот цикл используют тогда, когда в массиве(или другой коллекции) неизвестное количество элементов. Сама конструкция выглядит следующим образом:
...
foreach (ТипКоллекции Индекс in ПеременнаяКоллекции) {
     // Действие над Индекс
}
...
Что бы вы могли понять лучше, вот простой пример: создаём массив и заполняем его числом 2:
...
int
[] MyArray = new int[50];

foreach (int Item in MyArray) {
     MyArray[Item] = 2;
}
...
В качестве индекса могут выступать целые объекты классов, структур и.т.п. Вот простенький пример: есть массив структур, заполненный данными. Что бы усложнить задание, мы сгенерируем количество элементов, затем получим данные из элемента :
...
public struct Student {
     public string Name = "MyName";
     public int Year = 2;
}
public Random Rnd = new Random();
...
Student[] MyArray = new Student[Rnd.Next(1, 120)];

foreach (Student Item in MyArray) {
     string Name = Item.Name;
     int Year = Item.Year;
}
...
Важно! Цикл foreach работает не для всех коллекций! бывают случаи, что коллекции просто не поддерживают использование этого цикла.

Давайте напишем скрипт для GTA 4, что бы при нажатии кнопки tab, мы получали массив педов и дали каждому оружие а также пометим маркером их на радаре:
Код
using System;
using System.Windows.Forms;
using GTA;

namespace TestScript {
  public class Thread : Script {
  public Thread() {
  while (true) {
  if(Game.isKeyPressed(Keys.Tab)){
  Ped[] PedArrey = World.GetAllPeds();
  foreach (Ped CurrentPed in PedArrey) {
  if (CurrentPed.isAlive) {
  CurrentPed.Weapons.MP5.Ammo = 500;
  CurrentPed.AttachBlip();
  }
  }
  }
  Wait(0);
  }
  }
  }
}
Результат:


Следует учесть, что количество актёров в массиве всегда разное, так как люди генерируются вблизи игрока и в зависимости от скорости создания актёров и дистанции прорисовки.

Надеюсь этот цикл станет вашим другом smile

Теги: Блочные конструкции. Цикл foreach
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Какие моды Вы хотите видеть на сайте?
Всего ответов: 27
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
FlameBack
Рекомендую