Рисунок А.5 - Пример использования класса SortedSet<T>
Листинг 7 - Пример применения параллельных коллекций
System;System.Collections.Concurrent;System.Threading;System.Threading.Tasks;
ConsoleApplication1
{Program
{BlockingCollection<int> bc;
void producer()
{(int i = 0; i < 100; i++)
{
.Add(i * i);.WriteLine("Производится число " + i *
i);
}.CompleteAdding();
}
void consumer()
{i;(!bc.IsCompleted)
{(bc.TryTake(out i)).WriteLine("Потребляется число: " + i);
}
}
static void Main()
{= new BlockingCollection<int>(4);Pr = new Task(producer);Cn = new Task(consumer);.Start();.Start();
{.WaitAll(Cn, Pr);
}(Exception ex)
{.WriteLine(ex);
}
{.Dispose();.Dispose();.Dispose();
}
.ReadLine();
}
}
}
Рисунок А.6 - Применения параллельных коллекций
Листинг 8 - Пример использования перечислителей
System;System.Collections.Generic;ConsoleApplication1
{Program
{void Main()
{<int> arr = new List<int>();ran = new Random();(int i = 0; i < 10; i++)
arr.Add(ran.Next(1, 20));
// Используем перечислитель
IEnumerator<int> etr = arr.GetEnumerator();(etr.MoveNext()).Write(etr.Current + "\t");
Console.WriteLine("\n Повторный вызов перечислителя: \n");
// Сбросим значение и вновь исользуем перечислитель
// для доступа к коллекции.Reset();
while (etr.MoveNext()).Write(etr.Current + "\t");
Console.ReadLine();
}
}
}
Результат работы программы с использованием перечислителей представлен на
рисунке А.7
Рисунок А.7 - Использование перечислителей
Листинг 9 - Пример применения интерфейсов IEnumerator и IEnumerable
System;System.Collections;ConsoleApplication1
{MyInt : IEnumerable, IEnumerator
{[] ints = { 12, 13, 1, 4 };index = -1;
// Реализуем интерейс IEnumerableIEnumerator GetEnumerator()
{this;
}
// Реализуем интерфейс IEnumeratorbool MoveNext()
{(index == ints.Length - 1)
{();false;
}++;true;
}void Reset()
{= -1;
}object Current
{
{ints[index];
}
}
}Program
{void Main()
{mi = new MyInt();(int i in mi).Write(i+"\t");.ReadLine();
}
}
}
Результат работы программы с использованием интерфейсов IEnumerator и
Ienumerable представлен на рисунке А.8
Рисунок А.8 - Использование интерфейсов IEnumerator и Ienumerable
Листинг 10 - Пример использования именованного итератора
Book
{Book(string name)
{.Name=name;
}string Name { get; set; }
}Library : IEnumerable
{Book[] books;
Library()
{= new Book[] { new Book("Отцы и дети"), new Book("Война и мир"),Book("Евгений Онегин") };
}int Length
{{ return books.Length; }
}Book this[int index]
{
{books[index];
}
{
books[index] = value;
}
}
public IEnumerable GetBooks(int max)
{(int i = 0; i < max; i++)
{(i == books.Length)
{break;
}
{return books[i];
}
}
}
}