[ C# ] as 和 is 比较

is 运算符

判断对象是否是某特定类型,返回值为true或者false。

string s = "a string"; 
Trace.Assert(s is string); 
Trace.Assert(s is object);

 

2  as 运算符

尝试将对象转换为一个特定的数据类型,如果失败,将null赋值给目标.

在一个继承链上向上或向下转换为支持转型运算符的类型.

object o = "1";
string s = o as string;
int? ii = o as int?;
Trace.Assert(s != null);
Trace.Assert(ii == null);
Trace.Assert(sss is string);
 
class C 
{
	public override string ToString()
	{
		return base.ToString();
	}
	public static  implicit operator string(C c )
	{
		return c.ToString();
	}
}
一定要注意是在继承链上进行转换,下面的代码无法通过编译
C c = new C();
string s = c as string;   //will not pass the compilation
//错误为:无法通过引用转换、装箱转换、取消装箱转换、包装转换或 Null 类型转换将类型“C”转换为“string”   

可修改为以下形式:

object c = new C();
Trace.Assert(c as string == null);
 

posted on 2011-05-06 14:18  蚂蚁蚂蚁  阅读(248)  评论(0编辑  收藏  举报

导航