Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
12.02.2015
Размер:
620.03 Кб
Скачать

Правила объявления индексаторов

Должен быть задан по крайней мере один параметр индексатора

Параметрам должны быть присвоены значения

Индексаторы и массивы

Индексаторы не ссылаются на области памяти

Индексаторы могут иметь нецелочисленные индексы

Индексаторы могут быть перегружены

Индексаторы и массивы 2

Индексаторы и массивы 3

 

 

 

 

 

using System.Collections;

 

 

 

 

class StrIndex

 

 

 

 

 

 

 

 

{

 

 

 

 

public Hashtable studentList = new

 

 

 

Hashtable();

 

 

 

public int this[string name]

 

 

 

{

 

 

 

 

get

 

 

 

class Test

 

 

{

 

 

 

 

{

 

 

return (int) studentList[name];

 

 

}

 

static void Main()

 

{

 

 

set

 

 

StrIndex objIndex = new StrIndex();

{

 

 

objIndex["Sam"] = 232676;

studentList[name] = value;

objIndex["Tom"] = 455464;

}

 

 

System.Console.WriteLine("Phone

}

 

 

number of Sam is {0} and Phone number of

}

 

 

Tom is {1}",

 

 

 

 

 

 

 

 

objIndex["Sam"],objIndex["Tom"]);

 

 

}

 

 

 

 

}

 

 

 

 

 

 

 

IndexerExample indexTest = new IndexerExample();
indexTest.stringList[1]="Sam";
indexTest[2]="Tom"; indexTest["Sam"] = 232; indexTest["Tom"] = 455;
}
}
static void Main()
{

Индексаторы и массивы 4

using System.Collections; class IndexerExample

{

public string[] stringList=new string[10]; public string this[int index]

{get

{ return stringList[index]; }

set

{ stringList[index] = value.ToString();class Test

} } { public Hashtable studentList =

new Hashtable();

public int this[string number]

{

get

{return (int) studentList[number];} set

{ studentList[number] = value;

}

}

}

Множественные

индексаторы

Мы можем задать для индексатора несколько индексных параметров

К индексаторам с несколькими индексными параметрами можно получить доступ как многомерному массиву

Делегаты (Delegates)

Делегаты содержат ссылку на метод

Позволяет решать какой метод необходимо вызывать во время выполнения программы

Для использования:

Определение делегата

Присвоение(Instantiating) значения делегату

Использование делегата

Определение

делегатов

public delegate void DelegateName();

Присвоение (Instantiating) Делегатов

class TestDelegates

{

public delegate int CallFun(int a, int b); class MathsOperations

{

public int MulFun(int a, int b)

 

 

{

 

 

return a*b;

 

 

}

class Test

public int DivFun(int a, int b)

{

 

{

static void Main()

return a/b;

{

 

}

CallFun DelegateObj;

}

MathsOperations math = new MathsOperations(

 

 

DelegateObj = new CallFun(math.MulFun);

 

}

 

 

 

}

 

 

}

 

Использование делегатов

class TestDelegates

{

public delegate int CallFun(int a,

int b);

class MathsOperations

class Test

{

{

public int MulFun(int a, int

 

static void Main()

{

{

return a*b;

 

CallFun DelegateObj;

}

 

MathsOperations math = new

 

MathsOperations();

public int DivFun(int a, int

 

DelegateObj = new

{

 

return a/b;

CallFun(math.MulFun);

}

 

int t=DelegateObj(5, 3);

}

 

System.Console.WriteLine("The

 

 

is : {0}",t);

 

Result

 

}

 

}

 

}

Соседние файлы в папке Инструментальные средства