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

// Явная реализация. Обратите внимание на то, что // этот член является закрытым по умолчанию, bool IEven.IsOdd(int x) { if((x%2)    !=    0)    return    true;

else return false;

}

// Обычная реализация, public bool IsEven(int x) {

IEven о = this; // Интерфейсная ссылка на вызывающий объект, return !о.IsOdd(х);

}

}

class Demo {

static void Main {

MyClass ob = new MyClass; bool result;

result = ob.IsEven (4);

if(result) Console.WriteLine("4 — четное число.");

// result = ob.IsOdd(4); // Ошибка, член IsOdd интерфейса IEven недоступен

// Но следующий код написан верно, поскольку в нем сначала создается // интерфейсная ссылка типа IEven на объект класса MyClass, а затем по // этой ссылке вызывается метод IsOdd.

IEven iRef = (IEven) ob; result = iRef.IsOdd(3);

if(result) Console.WriteLine("3 — нечетное число.");

}

}

В приведенном выше примере метод IsOdd реализуется явно, а значит, он недоступен как открытый член класса MyClass. Напротив, он доступен только по интерфейсной ссылке. Именно поэтому он вызывается посредством переменной о ссылочного типа IEven в реализации метода IsEven .

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

interface IMyIF_A { int Meth(int x) ;

}

interface IMyIF_B { int Meth(int x) ;

}

// Оба интерфейса реализуются в классе MyClass. class MyClass : IMyIF_A, IMyIF_B {

// Реализовать оба метода Meth явно, int IMyIF_A.Meth(int x) { return x + x;

}

int IMyIF_B.Meth(int x) { return x * x;

}

// Вызывать метод Meth по интерфейсной ссылке. public int MethA(int x){

IMyIF_A a_ob; a_ob = this;

return a_ob.Meth(x); // вызов интерфейсного метода IMyIF_A

}

public int MethB(int x){

IMyIF_B b_ob; b_ob = this;

return b_ob.Meth(x); // вызов интерфейсного метода IMyIF_B

}

}

class FQIFNames {

static void Main {

MyClass ob = new MyClassO;

Console.Write("Вызов метода IMyIF_A.Meth: ");

Console.WriteLine(ob.MethA(3));

Console.Write("Вызов метода IMyIF_B.Meth: ");

Console.WriteLine(ob.MethB(3)) ;

}

}

Вот к какому результату приводит выполнение этой программы.

Вызов метода IMyIF_A.Meth: 6 Вызов метода IMyIF_B.Meth: 9

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

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

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

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

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

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

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

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

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