代码改变世界

IS运算符

2012-04-27 22:18  精诚所至 金石为开  阅读(537)  评论(0编辑  收藏  举报

IS运算符判断类型返回布尔值。

using System;
namespace aa
{
	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
	{
		public 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("\nAnalyzing ClassB type variable:");
			check.Check(try2);
			Console.WriteLine("\nAnalyzing ClassC type variale:");
			check.Check(try3);
			Console.WriteLine("\nAnalyzing ClassD type variable:");
			check.Check(try4);
			Console.WriteLine("\nAnalyzing MyStruct type variable:");
			check.Check(try5);
			Console.WriteLine("\nAnalyzing boxed MyStruct type variable:");
			check.Check(try6);
			Console.ReadKey();
		}
	}
}