Ноу Інти, лекція, c #

Застосування делегатів як методів зворотного виклику

Метод зворотного виклику використовується для передачі одному методу в якості параметра іншого методу, який може бути викликаний через переданий "покажчик" на метод.

Методи зворотного виклику можуть застосовуватися в різних цілях. Найбільш часто їх використовують для реалізації асинхронного обробки даних або визначення коду, що виконує додаткову обробку даних.

В результаті виконання цієї програми спочатку буде викликаний метод Metod1. а потім Metod2.

Застосування некерованого коду

За замовчуванням додатка на C # відносяться до керованого коду. Але при необхідності керований код може взаємодіяти з некерованим кодом. До некерованому коду, що викликається з керованих C # додатків, можна віднести функції DLL-бібліотек і сервіси COM-компонентів. Додаток керованого коду на мові C # також може включати фрагменти небезпечного коду. Небезпечний код теж відноситься до некерованого коду, так як виділення і звільнення пам'яті в ньому не контролюється виконуючою середовищем. NET.

небезпечний код

Фрагмент небезпечного коду слід позначати ключовим словом unsafe.

Ключовим словом unsafe потрібно обов'язково позначати будь-який фрагмент коду, який містить покажчик.

Модифікатор unsafe може бути вказаний для методів, властивостей і конструкторів (за винятком статичних конструкторів), а також для блоків коду.

Щоб використовувати небезпечний код, слід встановити опцію компілятора / unsafe. Для цього достатньо вибрати ім'я проекту у вікні Solution Explorer і через контекстне меню викликати діалог Property Pages (рис. 18.1). а потім на сторінці Configuration Properties | Build встановити значення опції Allow unsafe code blocks рівним True.

Ноу Інти, лекція, c #


Мал. 18.1. Діалог Property Pages

Покажчики можна використовувати тільки з розмірними типами, масивами і рядками. При завданні покажчика на масив перший елемент масиву має бути розмірного типу.

В якості типу можна вказувати будь-який некерований тип або void. Вираз є покажчиком на заданий тип. Фіксація об'єкта застосовується тільки для зазначеного виконуваного оператора або блоку. Доступ до фіксованої змінної не обмежений областю видимості небезпечного коду. Тому фіксована змінна може вказувати на значення, яка розташовується в ширшій області видимості, ніж дана область видимості небезпечного коду. При цьому компілятор C # не видає попереджень про таку ситуацію.

Однак компілятор C # не дозволить встановити покажчик на керовану змінну поза оператора fixed.

Схожі статті