Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дріс 13.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
189.44 Кб
Скачать

Интерфейстер және индексаторлар

Индексаторды интерфейсте таратқанда мына ережені сақтау керек: индексатор модификаторларсыз жазылады, индексатор денесіз қатынас функциясынан тұруы керек.

interface IMyInterface

{

...

// Индексаторды хабарлау

string this[int index]

{

get;

set;

}

}

Қасиет пен индексатор арасындағы айырмашылық

Кесте түрінде көрсетеміз:

Қасиет

Индексаторлар

Аты бойынша идентифицирленеді

Сигнатуре бойынша идентифицирленеді

Қатынас нүкте арқылы класс мүшесі ретінде жасалады

Қатынас квадрат жақшаға алынып массив элемент ретінде жасалады

Кластың статикалық немесе статикалық емес мүшесі болады

Кластың тек статикалық емес мүшесі болады

Қатынас функциясы get параметрлері болмайды

Қатынас функциясы get параметрлері тізімі индексаторлар сияқты болады

Қатынас функциясы set дайын параметрі value болады

Қатынас функциясы set дайын параметрі value қосымша параметрлері тізімі индексаторлар сияқты болады

***** Индексаторлар айнымалы болмайды. *****

Унарлық операторлар

Унарлық оператолар: +, -, !, ~, ++, --, true, false

Қайталап орындалатын унарлық операторлардың бір ғана параметрі болуы керек. Бұл параметр функция тарататын класс түрімен бірдей болуы керек.

using System;

class SomeClass

{

int i;

public SomeClass(int value)

{

i = value;

}

public static int operator - (SomeClass s)

{

return -s.i;

}

}

class Test

{

static void Main()

{

SomeClass sc = new SomeClass(10);

Console.WriteLine(-sc);

}

}

C++ айырмашылығы қайталап орындалатын операторлар инкремент (++) және декремент (--), постфикс пен префикс ажыратылмайды. Сондықтан екі жағдайда бірден анықталады.

using System;

class SomeClass

{

int i;

public SomeClass(int value)

{

i = value;

}

// операторлар ++ және – қайтарылатын мәндер

// класс түрінде болуы керек

public static SomeClass operator ++ (SomeClass s)

{

++s.i;

return s;

}

public override string ToString()

{

return i.ToString();

}

}

class Test

{

static void Main()

{

SomeClass sc = new SomeClass(10);

Console.WriteLine(++sc);

Console.WriteLine(sc++);

}

}

Операторлар true және false логикалық түрлерге қолданылады, мына өрнектер эквивалентті емес:

if(a == true)

if(! (a == false))

Бұл SQL деректері түріне тән. Бұл жағдайда компилятор операторлар true және false дұрыс есептеуге қолдануы мүмкін. Бұл операторлар bool түрін қайтару және бірге орындалуы керек.

using System;

class SomeClass

{

int i;

public SomeClass(int value)

{

i = value;

}

public override string ToString()

{

return i.ToString();

}

public static bool operator true(SomeClass s)

{

return s.i != 0;

}

public static bool operator false(SomeClass s)

{

return s.i == 0;

}

}

class Test

{

static void Main()

{

SomeClass sc = new SomeClass(10);

if(sc)

Console.WriteLine("yes");

else

Console.WriteLine("no");

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]