
- •Дополнительные члены класса
- •Примечание 1.
- •Синтаксис определения метода-оператора
- •Правила перегрузки операторов
- •При перегрузке бинарных операторов хотя бы один из операндов должен совпадать по типу
- •Файл ClassDate.cs:
- •public ClassDate(int month, int year)
- •Файл Class1.cs:
- •Свойства
- •Синтаксис определения свойства
- •access – уровень доступа (обычно выбирается public),
- •В определении свойства могут присутствовать
- •Если свойство поставлено в
- •Простой пример определения свойства.
- •Использование свойства :
- •Индексаторы
- •НО использование индексаторов не позволяет использовать методы класса Array подобно обычным массивам.
- •Одномерные индексаторы
- •elem_type – базовый тип индексатора:
- •access elem_type this [form_param_list]
- •Пример 1. Индексатор, контролирующий доступ к массиву. Для сокращения кода переменные len и
- •public int this [int index]
- •Использование индексатора:
- •Программа напечатает:
- •Пример 2. Индексатор только для чтения, несвязанный с массивом,
- •Программа напечатает:
- •Вложенные типы

Пример 2. Индексатор только для чтения, несвязанный с массивом,
атолько вычисляющий степени числа 2 (до 10-ой). class Power2
{
public int this [int index]
{
get
{
if (index >= 0 & index < 10)
{
return pwr(index);
}
else
{
return -1
}
}
}
32

int pwr(int p)
{
int result = 1;
for (int i=0; i<p; i++) result*= 2;
return result;
}
}
class TestPower
{
public static void Main ()
{
Power2 obj = new Power2( );
for (int i=0; i<6; i++) Console.Write (obj[i] + " ");
Console.WriteLine ( );
Console.WriteLine (obj[-1] +" "+ obj[15]);
}
}
33

Программа напечатает:
1 2 4 8 16 32
-1 -1
Примечание
Допускается перегрузка индексаторов.
Для этого требуется обеспечить различные наборы формальных параметров.
Например, для одного и того же класса можно создать индексаторы разных размерностей или индексаторы, в которых есть только один формальный параметр, но
в одном случае он имеет тип int,
а в другом - string.
34

Вложенные типы
Классы могут содержать определения других типов: классов, структур, перечислений и интерфейсов, которые называются вложенными типами.
Определение вложенного класса :
access class class_name
{
Данные-члены
Функции-члены
access class class_name
{
Данные-члены
Функции-члены
Вложенные типы
}
}
Преимущества от использования вложенных классов:
они позволяют более эффективно организовать код - легче поддерживать (и использовать) один внешний класс с набором вложенных, чем несколько отдельных классов.
35