• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом


  • Иллюстрированный самоучитель по Architecture .NET

    Управляемое приведение типов

    Ключевое слово _try_cast приводит к возникновению исключения System::InvalidCastException при попытке выполнить приведение типов, не поддерживаемое общеязыковой средой выполнения CLR. Это похоже на возникновение исключения bad_cast при выполнении оператора dynamic_cast в C++ и на исключение ClassCastException, возникающее при некорректном приведении типов в Java. Хотя по своему действию оператор _try_cast больше похож на оператор dynamic_cast, чем на оператор static_cast, _try_cast в действительности задуман как временная замена оператора static_cast, применяемая на стадии разработки приложений.

    После анализа всех возникающих при выполнении _try_cast исключений и внесения соответствующих исправлений в программу, операторы _try_cast обычно заменяются операторами static_cast. В следующем примере продемонстрировано использование операторов _try_cast для выявления некорректных приведений типов.

    //TryCastExample.cpp
    fusing <mscorlib.dll>
    using namespace System;
    // использовать пространство имен Система;
    _gc class Mammal
    // класс сборщика мусора Млекопитающее
    {
    };
    _gc class Dog: public Mammal
    // класс сборщика мусора Собака: общедоступное Млекопитающее
    {
    };
    _gc struct Cat: public Mammal
    // сборщик мусора; Кот: общедоступное Млекопитающее
    {
    };
    void main()
    {
    Mammal *pMammal = new Dog;
    // Млекопитающее *pMammal = новая Собака;
    try // пробовать
    {
    Dog *pDog = _try_cast <Dog *>(pMammal); // хорошо
    // Собака
    *pDog = _ try_cast <Собака *> (pMammal);
    Console::WriteLine("_try_cast <Dog *>");
    // Собака –
    // хорошо
    Cat *pCat = _try_cast <Cat *>(pMammal); // плохо!
    // Кот *pCat = _ try_cast <Кот *> (pMammal);
    Console::WriteLine("_try_cast <Cat *>"); // Кот –
    // пропустить
    }
    catch(InvalidCastException *pe)
    {
    Console::WriteLine("Ooops: {0}", pe › get_Message());
    }
    }
    

    Приведенная программа напечатает:

    _try_cast <Dog *>
    Ooops: Exception of type System.InvalidCastException was
    thrown.
    
    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.