C# 关键字is,as的区别
is关键字用来检查对象是否与给定类型兼容。
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
bool t = -36 is Int32;
Console.Write(t);
如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则 is 表达式的计算结果将是 true。
如果已知表达式将始终是 true 或始终是 false,则 is 关键字将导致编译时警告,但是,通常在运行时才计算类型兼容性。
不能重载 is 运算符。
请注意,is 运算符只考虑引用转换、装箱转换和取消装箱转换。不考虑其他转换,如用户定义的转换。
as 用于在兼容的引用类型之间执行转换,如果转换不可行,as 会返回 null 而不是引发异常。注意的是,as只能对引用类型的数据之间进行比较,
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
Session["bb"] = 33;
string bb = Session["bb"] as string;
if (null == bb)
{
Response.Write("null bb");
}
else
{
Response.Write(bb);
}
ession["bb"] = 33;
string bb = Session["bb"] as string;
if (null == bb)
{
Response.Write("null bb");
}
else
{
Response.Write(bb);
}
string bb = Session["bb"] as string;
if (null == bb)
{
Response.Write("null bb");
}
else
{
Response.Write(bb);
}