Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Здесь есть возможность читать онлайн «Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва • Санкт-Петербург • Киев, Год выпуска: 2007, ISBN: 2007, Издательство: Издательский дом Вильямс, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML. Книга содержит множество примеров программного кода, призванного помочь читателю в освоении предлагаемого материала. Программный код примеров можно загрузить с Web-сайта издательства.

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

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

Интервал:

Закладка:

Сделать

// Класс Garage имеет метод, использующий CarDelegate.

using System.Collections;

public class Garage {

// Этот метод получает Car.CarDelegate в виде параметра.

public void ProcessCars(Car.CarDelegate proc) {

// Куда направить вызов?

Console.WriteLine("***** Вызывается: {0} *****", proc. Method);

// Вызывается метод экземпляра или статический метод?

if (proc. Target!= null) Console.WriteLine("-›Цель: {0} ", proc. Target);

else Console.WriteLine("-›Целевым является статический метод");

// Вызов "указанного" метода всех машин по очереди.

foreach (Car с in theCars) {

Console.WriteLine("\n-› Обработка Car");

proc(c);

}

}

}

Как и в случае любого делегата, при вызове ProcessCars() мы должны указать имя метода, который обработает запрос. Напомним, что такой метод может быть или статическим, или методом экземпляра. Для примера предположим, что в качестве такого метода будут использоваться члены экземпляра нового класса ServiceDepartment (отдел технического обслуживании), которым назначены имела WashCar() и RotateTires(). Обратите внимание на то, что эти два метода используют новые свойства Rotate и Dirty типа Car.

// Этот класс определяет методы, которые будут вызываться

// типом Car.CarDelegate.

public class ServiceDepartment {

public void WashCar(Car c) {

if (c.Dirty) Console.WriteLine("Моем машину");

else Console.WriteLine("Эта машина уже помыта…");

}

public void RotateTires(Car с) {

if (c.Rotate) Console.WriteLine("Меняем шины");

else Console.WriteLine("Менять шины не требуется…");

}

}

Теперь проиллюстрируем взаимодействие между новыми типами Car, CarDelegate, Garage и ServiceDepartment, рассмотрев их использование в следующем фрагменте программного кода.

// Garage направляет все заказы в ServiceDepartment

// (найти хорошего механика всегда проблема…)

public class Program {

static void Main(string[] args) {

// Создание гаража.

Garage g = new Garage();

// Создание отделения обслуживания,

ServiceDepartment sd = new ServiceDepartment();

// Garage моет машины и меняет шины,

// делегируя соответствующие полномочия ServiceDepartment.

g.ProcessCars(new Car.CarDelegate(sd.WashCar));

g.ProcessCars(new Car.CarDelegate(sd.RotateTires));

Console.ReadLine();

}

}

На рис. 8.6 показан соответствующий вывод.

Рис 86 Перекладывание ответственности Анализ программного кода - фото 111

Рис. 8.6. Перекладывание ответственности

Анализ программного кода делегирования

Предложенный выше метод Main() начинается с создания экземпляров типов Garage и ServiceDepartment. Когда вы пишете

// Помыть все грязные машины.

g.ProcessCars(new Car.CarDelegate(sd.WashCar));

это на самом деле означает: "Добавить указатель на метод ServiceDepartment.WashCar() к объекту Car.CarDelegate и передать этот объект в Garage.ProcessCars()". Подобно любому автомобильному предприятию в реальном мире, все заказы передаются в отдел технического обслуживания (что и объясняет, почему замена масла, обычно требующая 30 минут, занимает целых 2 часа). С учетом этого ProcessCars() можно интерпретировать так.

// CarDelegate указывает на функцию ServiceDepartment.WashCar.

public void ProсessCars(Car.CarDelegate proc) {

foreach (Car с in theCars)

proc(c); // proc(c) =› ServiceDepartment.WashCar(c)

}

Точно так же, если вы говорите

// Поменять шины.

g.ProcessCars(new Car.CarDelegate(sd.RotateTires));

то ProcessCars() можно интерпретировать, как

// CarDelegate указывает на функцию ServiceDepartment.RotateTires.

public void ProcessCars(Car.CarDelegate proc) {

foreach(Car с in the Cars)

proc(c); //proc(c) =› ServiceDepartment.RotateTires(e)

}

Исходный код. Проект CarGarage размещен в подкаталоге, соответствующем главе 8.

Ковариантность делегатов

К этому моменту вы должны чувствовать себя более уверенно при создании и использовании типов делегата. Перед тем как перейти к изучению синтаксиса событий в C#, мы рассмотрим новую возможность .NET 2.0, связанную с делегатами и обозначенную термином ковариантность. Вы могли обратить внимание на то, что все делегаты, созданные нами до сих пор, указывали на методы, возвращающие простые числовые типы данных (или не возвращающие значений вообще). Но предположим, что нам нужен делегат, способный указывать на методы, возвращающие пользовательский тип класса.

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

Интервал:

Закладка:

Сделать

Похожие книги на «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание»

Представляем Вашему вниманию похожие книги на «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание»

Обсуждение, отзывы о книге «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x