Відмінність операцій is as і в C#

10

Програмування Asp.net
Попередній

Наступний

Оскільки явне приведення може потерпіти невдачу, згенерувавши виняток, буває так що ви хочете перевірити тип змінної без виконання приведення і спостереження, вийде воно чи ні. Перевірка такого роду стомлююча і неефективна, до того ж виключення дорого обходяться під час виконання. З цієї причини в С# передбачені операції, які приходять на допомогу в таких ситуаціях:

  • is
  • as

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

Операція аѕ подібна is за винятком того, що вона повертає посилання на цільовий тип. Оскільки гарантується, що вона ніколи не згенерує виняток, тут просто повертається null-посилання, якщо дане перетворення неможливо.

Що ж краще вибрати? Коли вам знадобиться перевірити, чи належить змінна до певного типу і якщо так, то виконати якусь операцію над потрібним типом. Ви можете перевірити змінну на приналежність до типу, застосувавши операцію is, а потім, якщо вона поверне true, привести змінну до цього типу. Однак це буде не ефективно. Більш вдалий підхід полягає в тому, щоб слідувати ідіомі застосування операції аѕ для отримання посилання на змінну з потрібним типом, а потім перевірити її нерівність null, що буде означати, що перетворення успішно. Таким чином, ви виконаєте тільки одну операцію пошуку замість двох.