Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы C#.doc
Скачиваний:
58
Добавлен:
10.02.2015
Размер:
430.59 Кб
Скачать

Основы c#. Урок 31. Функции класса System.Array

Массивы в C# основаны на классе System.Array. У этог класса, как и у любого другого, есть разные полезные методы.

Вот пример:

usingSystem;

namespacetest

{

class Test

{

static void Main(string[] args)

{

//Объявление массива.

int[] num = {4, -5, 2, 0, 23};

//Выводим массив.

foreach (int i in num)

{

Console.WriteLine(i.ToString());

}

//Переворачиваем массив.

Console.WriteLine("Перевернутый массив");

Array.Reverse(num);

foreach (int i in num)

{

Console.WriteLine(i.ToString());

}

//Сортируем массив.

Array.Sort(num);

Console.WriteLine("Отсортированный массив");

foreach (int i in num)

{

Console.WriteLine(i.ToString());

}

//Обнуляем массив.

Array.Clear(num, 0, 5);

Console.WriteLine("Обнуленный массив");

foreach (int i in num)

{

Console.WriteLine(i.ToString());

}

}

}

}

Тут мы используем статические методы класса Array для сортировки, переворачивания и очистки массива. Разумеется, эти методы не единственные.

В классе Array есть, например, еще встроенный статический метод IndexOf предназначенный для поиска элемента в массиве. Вот пример его использования:

...

intk=-5;

Console.WriteLine("Число {0} находится на {1} месте.", k, Array.IndexOf(num, k));

...

Этот метод возвращает индекс искомого элемента (нумерация с нуля). Если такого элемента нет, то возвращается -1.

Обратите внимание, что эти методы действуют для встроенных типов (в нашем примере массив был типа int). Для пользовательских типов данных их применение тоже возможно, но для этого на приложить некоторые дополнительные усилия.

Как видите, с массивами в C# можно автоматически делать много чего полезного. В Visual C++, например, такого удобства не было.

Основы c#. Урок 33. События

На этом занятии мы с вами рассмотрим создание событий в C#. С помощью событий класс извещает, что в нем что-то произошло. События часто создаются в классах используемых для создания пользовательского интерфейса - например у кнопки есть событие, наступающее при щелчке на этой кнопке. События также могут присутствовать и в классах, не предназначенных для создания пользовательского интерфейча - например, они могут быть в классах консолького приложения. Именно для такого класса мы и рассмотрим создание события.

События в C# основаны на делегатах. Это означает, что событие имеет тип определенного делегата. Вот пример класса с событием в нем:

usingSystem;

namespacetest

{

//Объявление делегата.

delegate void EventHandler();

//Объявление класса с событием.

classMyEvent

{

//Объвление события на основе делегата.

public event EventHandler f;

//Объвление метода, в котором вызывается событие.

public void func()

{

f();

}

}

//Класс для тестирования события класса MyEvent.

classTest

{

//Обработчик для события.

public static void z()

{

Console.WriteLine("Вызов обработчика");

}

//Метод main.

static void Main(string[] args)

{

//Создаем экземпляр класса с событием.

MyEvent w=new MyEvent();

//Добавление обработчика события.

w.f+=new EventHandler(z);

//Вызов метода, в котором вызывается событие.

w.func();

}

}

}

Сначала мы в строке

...

delegate void EventHandler();

...

объявляем делегат. Параметров у него нет (хотя могут и быть), тип - void.

Затем мы объявляем класс MyEvent, внутри которого объвляем событие f (имя произвольное):

...

public event EventHandler f;

...

Синтаксис тут такой - модификатор доступа (у нас public), затем ключевое слово event, потом имя делегата, на основании которого мы создаем наше событие (у нас это EventHandler) и, наконец, имя произольное событие (f). Обратите внимание, что событие появится на вкладке ClassView:

Далее в нашем классе с событиями мы в некотором методе это событие вызываем:

...

public void func()

{

f();

}

...

Класс с событием создан. Далее мы пишем класс Test для тестирования события. В этом классе мы создаем обработчик z для события (имя обработчика произвольное). Этот метод мы объвляем как статический.

Далее мы объявляем экземпляр нашего класса MyEvent (того самого, в котором мы объявили событие):

...

MyEvent w=new MyEvent();

...

Остается теперь указать, что за обработчик будет у события f класса MyEvent. Это мы делаем в строке

...

w.f+=new EventHandler(z);

...

Этой строчкой мы указываем, что событие f будет обрабатывать метод z класса Test.

Если мы запустим наше программу, то на вызовется обработчик для события (т. е. выведется надпись "Вызов обработчика"):

Обратите внимание, что обработчик для события мы пишем в тестовом классе (т. е. в классе Test, в котором мы объявили экземпляр нашего класса с событиями). Так мы делаем всегда, и не только на пратформе .NET.