using System; using System.Collections.Generic; using System.Text; class Checker { public void Check(object param1) { if (param1 is ClassA) Console.WriteLine("Variable can be converted to ClassA."); else Console.WriteLine("Variable can't be converted to ClassA."); if (param1 is IMyInterface) Console.WriteLine("Variable can be converted to IMyInterface."); else Console.WriteLine("Variable can't be converted to IMyInterface."); if (param1 is MyStruct) Console.WriteLine("Variable can be converted to MyStruct."); else Console.WriteLine("Variable can't be converted to MyStruct."); } } interface IMyInterface { } class ClassA : IMyInterface { } class ClassB : IMyInterface { } class ClassC { } class ClassD : ClassA { } struct MyStruct : IMyInterface { } class Program { static void Main(string[] args) { Checker check = new Checker(); ClassA try1 = new ClassA(); ClassB try2 = new ClassB(); ClassC try3 = new ClassC(); ClassD try4 = new ClassD(); MyStruct try5 = new MyStruct(); object try6 = try5; Console.WriteLine("Analyzing ClassA type variable:"); check.Check(try1); Console.WriteLine(" Analyzing ClassB type variable:"); check.Check(try2); Console.WriteLine(" Analyzing ClassC type variable:"); check.Check(try3); Console.WriteLine(" Analyzing ClassD type variable:"); check.Check(try4); Console.WriteLine(" Analyzing MyStruct type variable:"); check.Check(try5); Console.WriteLine(" Analyzing boxed MyStruct type variable:"); check.Check(try6); Console.ReadKey(); } }