русс | укр

C# - Головна
Контакти
Задайте питання...
Перегляд всіх питань


Простір імен
  ► System (5)
  ► Microsoft (1)


Для учнів (початківців)
  ► Відео уроки (4)
  ► Навчання (177)
  ► Приклади програм (19)
  ► Секрети Сі Шарп (4)

Для професіоналів
  ► Навчання (6)
  ► Приклади програм (1)










Інтерфейсні індексатори C#

В інтерфейсі можна визначити і індексатор. Оголошення індексування в інтерфейсі має наступний формат запису:

// Інтерфейсний індексатор тип_элемента this[int індекс]{

get;

set;

)

Індексатори, призначені тільки для читання або тільки для запису, містять тільки get- або set-метод, відповідно.

Пропонуємо ще одну версію інтерфейсу iSeries, в який доданий індексатор, призначений тільки для читання елемента ряду.

// Додавання в інтерфейс індексування.

using System;

public interface ISeries { // Інтерфейсне властивість,

int next {

get; // Повертає наступне число ряду,

set; // Встановлює наступне число ряду.

}

// Інтерфейсний індексатор,

int this[int index] {

get; // Повертає заданий член ряду.

}

// Реалізація інтерфейсу ISeries,

class ByTwos : ISeries {

int val;

public ByTwos() {

val = 0;

}

// Отримуємо або встановлюємо значення з допомогою // властивості,

public int next { get {

val += 2;

return val;

}

set {

val = value;

}

}

// Отримуємо значення за допомогою індексування,

public int this[int index] {

get {

val = 0;

for (int i=0; i<index; i++)

val += 2; return val;

}

}

// Демонструємо використання інтерфейсного індексатора, class SeriesDemo4 {

public static void Main() { ByTwos ob = new ByTwos();

// Отримуємо доступ до ряду допомогою властивості, for(int i-0; i < 5; i++}

Console.WriteLine("Таке значення одно " + ob.next);

Console.WriteLine("\пНачинаем з числа 21");

ob.next = 21;

for(int i=0; i < 5; i++)

Console.WriteLine("Таке значення одно " + ob.next);

Console.WriteLine("\пПереход в початковий стан."); ob.next - 0;

// Отримуємо доступ до ряду допомогою індексування, for(int i-0; i < 5; i++)

Console.WriteLine("Таке значення одно " + ob[i]);

}

)

Ось результати, згенеровані цією програмою:

Таке значення дорівнює 2

Таке значення дорівнює 4

Таке значення дорівнює 6

Таке значення дорівнює 8

Таке значення дорівнює 10

Починаємо з числа 21

Наступне значення дорівнює 23

Таке значення дорівнює 25

Таке значення дорівнює 27

Таке значення одно 29

Таке значення одно 31

Перехід в початковий стан.

Таке значення дорівнює 0

Таке значення дорівнює 2

Таке значення 4

Таке значення дорівнює 6

Таке значення дорівнює 8

Спадкування інтерфейсів

Один інтерфейс може успадкувати "багатство". Синтаксис цього механізму аналогічний синтаксису, що використовується для успадкування класів. Якщо клас реалізує інтерфейс, який успадковує інший інтерфейс, цей клас повинен забезпечити способи реалізації для всіх членів, визначених всередині ланцюжка спадкування інтерфейсів. Розглянемо такий приклад:

// Один інтерфейс може успадковувати інший.

using System;

public interface A { void methl(); void meth2() ;

}

// Інтерфейс тепер включає методи methlО і meth2(),

// а також додає метод meth3().

public interface В : A {

void meth3 () ;

}

// Цей клас повинен реалізувати всі методи

// інтерфейсів А і В.

class MyClass : {

public void methl() {

Console.WriteLine("Реалізація методу methl().");

}

public void meth2() {

Console.WriteLine("Реалізація методу meth2().");

}

public void meth3() {

Console.WriteLine("Реалізація методу meth3().");

}

}

class IFExtend {

public static void Main() {

MyClass ob = new MyClassО;

ob.methlO;

ob.meth2() ; ob.meth3();

}

Якщо б в якості експерименту ви спробували видалити метод methl (), реалізований у класі MyClass, то відразу ж отримали б від компілятора повідомлення про помилку. Як згадувалося вище, будь-який клас, який реалізує інтерфейс, повинен реалізувати всі методи, визначені цим інтерфейсом, включаючи методи, які успадковані від інших інтерфейсів.

 

Переглядів: 2016






© 2012 ci-sharp.ru При використанні матеріалу пряме iндексуюче посилання на сайт ОБОВ'ЯЗКОВЕ.
Права строго захищені нормами міжнародного права, інтелектуальної власності та авторського права.