Отличие операций as и is в C#

Programming
Предыдущий Следующий

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

  • is
  • as

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

Операция аs подобна is за исключением того, что она возвращает ссылку на целевой тип. Поскольку гарантируется, что она никогда не сгенерирует исключения, здесь просто возвращается null-ссылка, если данное преобразование невозможно. 

Что же лучше выбрать? Когда вам понадобится проверить, относится ли переменная к определенному типу и если да, то выполнить какую-то операцию над нужным типом. Вы можете проверить переменную на принадлежность к типу, применив операцию is, а затем, если она вернет true, привести переменную к этому типу. Однако это будет не эффективно. Более удачный подход заключается в том, чтобы следовать идиоме применения операции аs для получения ссылки на переменную с нужным типом, а затем проверить ее неравенство null, что будет означать, что преобразование успешно. Таким образом, вы выполните только одну операцию поиска вместо двух.

 

Самостоятельный отпуск Опыт заказа вывоза мусора в Киеве Магія зміни: Від ночі до дня
Магія Вечірнього Неба: Відлякуйте втомленість дня і зануртеся у світ загадок і краси