Герберт Шилдт - C# 4.0 полное руководство - 2011

Здесь есть возможность читать онлайн «Герберт Шилдт - C# 4.0 полное руководство - 2011» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

C# 4.0 полное руководство - 2011: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «C# 4.0 полное руководство - 2011»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

C# 4.0 полное руководство - 2011 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «C# 4.0 полное руководство - 2011», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Ниже приведен вариант предыдущего примера программы, измененный с целью продемонстрировать применение метода CompleteAdding () , свойства IsCompleted и метода TryTake ().

// Применение методов CompleteAdding(), TryTake() и свойства IsCompleted. using System;

using System.Threading.Tasks;

using System.Threading;

using System.Collections.Concurrent;

class BlockingDemo {

static BlockingCollection be;

// Произвести и поставить символы от А до Z. static void Producer() {

for (char ch = 'A'; ch <= 'Z'; ch++) { be.Add(ch);

Console.WriteLine("Производится символ " + ch);

}

be.CompleteAdding();

}

// Потреблять символы до тех пор, пока их будет производить поставщик.

static void Consumer() {

char ch;

while(!be.IsCompleted) { if(be.TryTake(out ch))

Console.WriteLine("Потребляется символ " + ch);

}

}

static void Main() {

// Использовать блокирующую коллекцию, ограниченную 4 элементами, be = new BlockingCollection(4);

// Создать задачи поставщика и потребителя.

Task Prod = new Task(Producer);

Task Con = new Task(Consumer);

// Запустить задачи.

Con.Start();

Prod.Start();

// Ожидать завершения обеих задач, try {

Task.WaitAll(Con, Prod);

} catch(AggregateException exc) {

Console.WriteLine (exc);

} finally {

Con.Dispose();

Prod.Dispose(); be.Dispose();

}

}

}

Этот вариант программы дает такой же результат, как и предыдущий. Главное его отличие заключается в том, что теперь метод Producer () может производить и поставлять сколько угодно элементов. С этой целью он просто вызывает метод CompleteAdding (), когда завершает создание элементов. А метод Consumer () лишь "потребляет" произведенные элементы до тех пор, пока свойство IsCompleted не примет логическое значение true.

Несмотря на специфический до некоторой степени характер параллельных коллекций, предназначенных в основном для параллельного программирования, у них, тем не менее, имеется немало общего с обычными, непараллельными коллекциями, описанными в предыдущих разделах. Если же вам приходится работать в среде параллельного программирования, то для организации одновременного доступа к данным из нескольких потоков вам, скорее всего, придется воспользоваться параллельными коллекциями.

Сохранение объектов, определяемых пользователем классов, в коллекции

Ради простоты приведенных выше примеров в коллекции, как правило, сохранялись объекты встроенных типов, в том числе int, string и char. Но ведь в коллекции можно хранить не только объекты встроенных типов. Достоинство коллекций в том и состоит, что в них допускается хранить объекты любого типа, включая объекты определяемых пользователем классов.

Рассмотрим сначала простой пример применения класса необобщенной коллекции ArrayList для хранения информации о товарных запасах. В этом классе инкапсулируется класс Inventory.

// Простой пример коллекции товарных запасов.

using System;

using System.Collections;

class Inventory { string name; double cost; int onhand;

public Inventory(string n, double c, int h) { name = n; cost = c; onhand = h;

}

public override string ToStringO { return

String.Format("{0,-10}Стоимость: {1,6:С} Наличие: {2}",

name, cost, onhand);

}

}

class InventoryList { static void Main() {

ArrayList inv = new ArrayList(); \

// Добавить элементы в список. inv.Add(new Inventory("Кусачки", 5.95, 3)); inv.Add(new Inventory("Отвертки", 8.29, 2)); inv.Add(new Inventory("Молотки", 3.50, 4)); inv.Add(new Inventory("Дрели", 19.88, 8));

Console.WriteLine("Перечень товарных запасов:"); foreach(Inventory i in inv) {

Console.WriteLine(" " + i);

При выполнении программы из данного примера получается следующий результат.

Перечень товарных запасов:

Обратите внимание на то, что в данном примере программы не потребовалось никаких специальных действий для сохранения в коллекции объектов типа Inventory. Благодаря тому что все типы наследуют от класса ob j ect, в необобщенной коллекции можно хранить объекты любого типа. Именно поэтому в необобщенной коллекции нетрудно сохранить объекты определяемых пользователем классов. Безусловно, это также означает, что такая коллекция не типизирована.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «C# 4.0 полное руководство - 2011»

Представляем Вашему вниманию похожие книги на «C# 4.0 полное руководство - 2011» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «C# 4.0 полное руководство - 2011»

Обсуждение, отзывы о книге «C# 4.0 полное руководство - 2011» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x