is:检查对象是否与给定类型兼容,返回布尔类型值。例如,可以确定对象是否与 string 类型兼容,如下所示: if (obj is string) { // } as 运算符类似于强制转换,所不同的是,当转换失败时,运算符返回null,而不是引发异常 如: string str="123"; Button btn1=new Button(); if ((str as btn1)!=null) { //转换成功 }
你说的类型转换应该是 as 关键字。 但也不支持装箱操作。只能是尝试的变换为指定类型。如果失败则返回null。 比如:object obj = 1; string str = obj as string;但是下面的类型变换是不支持的。int obj = 1; string str = obj as string;
is 检查对象类型的兼容性,并返回结果,true或者false; 不会抛出异常; 如果对象为null,则返回值永远为false。 as 检查对象类型的兼容性,并返回结果,如果不兼容就返回null; 不会抛出异常; 如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。
强制类型转换必须是类型放在前面,例如:
另外,string类是不支持隐性转换的,只有在+运算的时候,才会转换,例如
Console.WriteLine(1 + "" is string);
if (obj is string)
{
//
}
as 运算符类似于强制转换,所不同的是,当转换失败时,运算符返回null,而不是引发异常
如:
string str="123";
Button btn1=new Button();
if ((str as btn1)!=null)
{
//转换成功
}
int类型不是应该可以通过装箱转换为string类型吗,is操作符的定义也说能够通过装箱转换成为指定类型的就返回True吗?is操作符用来判断1是否和string兼容的,当然返回false
但也不支持装箱操作。只能是尝试的变换为指定类型。如果失败则返回null。
比如:object obj = 1;
string str = obj as string;但是下面的类型变换是不支持的。int obj = 1;
string str = obj as string;
检查对象类型的兼容性,并返回结果,true或者false;
不会抛出异常;
如果对象为null,则返回值永远为false。
as
检查对象类型的兼容性,并返回结果,如果不兼容就返回null;
不会抛出异常;
如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。