Сообщения с тегом ‘null’
Две проблемы с обработчиками событий
Написано admin в 20 Июнь 2008 – 21:45 -Две проблемы с обработчиками событий
Объекты, создающие события, ничего не знают об объектах, обрабатывающих эти события. Объекты, обрабатывающие события, ничего не знают друг о друге, независимо выполняя свою работу. В такой модели могут возникать определенные проблемы. Рассмотрим некоторые из них.
Игнорирование коллег
Задумывались ли вы, какую роль играет ключевое слово event, появляющееся при объявлении события? Событие, объявленное в классе, представляет экземпляр делегата. В предыдущей лекции, когда речь шла о делегатах, их экземпляры объявлялись без всяких дополнительных ключевых слов.
Слово “event” играет важную роль, позволяя решить проблему, названную нами “игнорированием коллег”. В чем ее суть? В том, что некоторые из классов Receiver могут вести себя некорректно по отношению к своим коллегам, занимающимся обработкой того же события. При присоединении обработчика события в классе Receiver можно попытаться вместо присоединения обработчика выполнить операцию присваивания, игнорируя, тем самым, уже присоединенный список обработчиков. Взгляните еще раз на процедуру OnConnect класса Receiver2; там демонстрируется такая попытка в закомментированном операторе. Аналогично, в процедуре OffConnect вместо отсоединения (операции -) можно попытаться присвоить событию значение null, отсоединяя тем самым всех других обработчиков. Read more »
Tags: ChangedEventArgs, event, int, item, ListWithChangedEvent, null, OffConnect, OnChanged, OnConnect, permit, receiver, void
Находится в Учебник | No Comments »
Классы с событиями, допустимые в каркасе .Net Framework
Написано admin в 20 Июнь 2008 – 21:43 -Классы с событиями, допустимые в каркасе .Net Framework
Если создавать повторно используемые компоненты с событиями, работающие не только в проекте C#, то необходимо удовлетворять некоторым ограничениям. Эти требования предъявляются к делегату; они носят, скорее, синтаксический характер, не ограничивая существа дела.
Перечислю эти ограничения:
- делегат, задающий тип события, должен иметь фиксированную сигнатуру из двух аргументов: delegate <Имя_делегата> (object sender, <Тип_аргументов> args);
- первый аргумент задает объект sender, создающий сообщение. Второй аргумент args задает остальные аргументы – входные и выходные, – передаваемые обработчику. Тип этого аргумента должен задаваться классом, производным от встроенного в .Net Framework класса EventArgs. Если обработчику никаких дополнительных аргументов не передается, то следует просто указать класс EventArgs, передавая null в качестве фактического аргумента при включении события;
- рекомендуемое имя делегата – составное, начинающееся именем события, после которого следует слово EventHandler, например, FireEventHandler. Если никаких дополнительных аргументов обработчику не передается, то тогда можно вообще делегата не объявлять, а пользоваться стандартным делегатом с именем EventHandler.
Tags: delegate, EventArgs, EventHandler, FireEventHandler, Framework, NET, null, sender
Находится в Учебник | No Comments »
Объявление массивов
Написано admin в 20 Июнь 2008 – 21:14 -Объявление массивов
Рассмотрим, как объявляются одномерные массивы, массивы массивов и многомерные массивы.
Объявление одномерных массивов
Напомню общую структуру объявления:
[<атрибуты>] [<модификаторы>] <тип> <объявители>;
Забудем пока об атрибутах и модификаторах. Объявление одномерного массива выглядит следующим образом:
<тип>[] <объявители>;
Заметьте, в отличие от языка C++ квадратные скобки приписаны не к имени переменной, а к типу. Они являются неотъемлемой частью определения класса, так что запись T[] следует понимать как класс одномерный массив с элементами типа T.
Что же касается границ изменения индексов, то эта характеристика к классу не относится, она является характеристикой переменных – экземпляров, каждый из которых является одномерным массивом со своим числом элементов, задаваемых в объявителе переменной.
Как и в случае объявления простых переменных, каждый объявитель может быть именем или именем с инициализацией. В первом случае речь идет об отложенной инициализации. Нужно понимать, что при объявлении с отложенной инициализацией сам массив не формируется, а создается только ссылка на массив, имеющая неопределенное значение Null. Поэтому пока массив не будет реально создан и его элементы инициализированы, использовать его в вычислениях нельзя. Вот пример объявления трех массивов с отложенной инициализацией: Read more »
Tags: Arrays, Arrs, CreateOneDimAr, int, null, PrintAr, TestDeclaration, void
Находится в Учебник | No Comments »
Урок 19. TreeView для каталогов – продолжение
Написано admin в 20 Июнь 2008 – 19:41 -Урок 19. TreeView для каталогов – продолжение
Продолжаем заниматься нашим деревом каталогов.
Вот код обещанного на прошлом уроке метода NodeExpand:
Tags: AddTreeNodes, fullPath, GetFullPath, NodeExpand, null, RemoveAt, Text, TreeView
Находится в Windows и C# | No Comments »
Урок 15. Продолжаем работать с TreeView
Написано admin в 20 Июнь 2008 – 19:38 -Урок 15. Продолжаем работать с TreeView
На этом уроке мы с вами посмотрим, как можно найти узел по его тексту.
Добавьте на форму программы, написанной на прошлом уроке, еще одну кнопку и тествое поле. Для кнопки задайте значение свойст Name и Text на find и Find соответственно, для тествого поля эти же свойства установите в findNode и пустую строку.
Теперь в обработчике нажатия на кнопку вставьте следующий код:
Tags: Click, EventArgs, findNode, foreach, name, null, return, SelectedNode, sender, string, System, TreeNode, TreeView
Находится в Windows и C# | No Comments »
