Читаем C# 4.0 полное руководство - 2011 полностью

В методеMain создается экземплярintDelделегата, которому присваивается ссылка на методSum .

SomeOp intDel = Sum;

МетодSum принимает аргумент типаintи возвращает значение типаint,поэтому он совместим с целочисленным экземпляром делегатаSomeOp.

Аналогичным образом создается экземплярstrDelделегата, которому присваивается ссылка на методReflect .

SomeOp strDel = Reflect;

МетодReflect принимает аргумент типаstringи возвращает результат типаstring,поэтому он совместим со строковым экземпляром делегатаSomeOp.

В силу присущей обобщениям типовой безопасности обобщенным делегатам нельзя присваивать несовместимые методы. Так, следующая строка кода оказалась бы ошибочной в рассматриваемой здесь программе.

Ведь метод Reflect принимает аргумент типа string и возвращает результат типа string, а следовательно, он несовместим с целочисленным экземпляром делегата SomeOp.

Обобщенные интерфейсы

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

// Продемонстрировать применение обобщенного интерфейса, using System;

public interface ISeries {

T GetNext;// возвратить следующее по порядку число

void Reset; // генерировать ряд последовательных чисел с самого начала void SetStart(T v); // задать начальное значение

}

//Реализовать интерфейс ISeries, class ByTwos : ISeries {

T start;

T val;

// Этот делегат определяет форму метода, вызываемого для генерирования // очередного элемента в ряду последовательных значений, public delegate Т IncByTwo(Т v);

// Этой ссылке на делегат будет присвоен метод,

// передаваемый конструктору класса ByTwos.

IncByTwo incr;

public ByTwos(IncByTwo incrMeth) { start = default(T); val = default(T); incr = incrMeth;

}

public T GetNext { val = incr(val); return val;

}

public void Reset    {

val = start;

}

public void SetStart(T v) { start = v; val = start;

}

}

class ThreeD {

public int x/ч у, z;

public ThreeD(int a, int b, int c) { x = a;

У = b;

z = c;

}

}

class GenlntfDemo {

// Определить метод увеличения на два каждого // последующего значения типа int. static int IntPlusTwo(int v) { return v + 2;

}

// Определить метод увеличения на два каждого // последующего значения типа double, static double DoublePlusTwo(double v) { return v + 2.0;

}

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных