static void Main() { ClassB b = new ClassB(); ClassA a = null; //--------------------------------------------- is --------------------------------------------- // Оператор is - проверяет совместимость объекта с заданным типом. // Если предоставленный объект может быть приведен к предоставленному типу не вызывая исключение, // выражение is принимает значение true. // Например, в следующем коде определяется, является ли объект экземпляром типа A или типа, производного от A: if (b is ClassA) { a = (ClassA)b; } else { a = null; } //--------------------------------------------- as--------------------------------------------- // Оператор as используется для выполнения преобразований между совместимыми ссылочными типами. // Оператор as подобен оператору приведения. Однако, если преобразование невозможно, // as возвращает значение null, а не вызывает исключение. // В общем виде логика работы оператора as представляет собой механизм использования оператора is // (пример на 25 строке), только в сокращенном виде. a = b as ClassA; // Delay. Console.ReadKey(); }
static void Main() { ClassA instanceA = new ClassA(); instanceA.Method1(); instanceA.Method2(); Console.WriteLine(new string('-', 15)); ClassB instanceB = new ClassB(); instanceB.Method1(); instanceB.Method2(); Console.WriteLine(new string('-', 15)); ClassC instanceC = new ClassC(); instanceC.Method1(); instanceC.Method2(); // Delay. Console.ReadKey(); }