Console.WriteLine(1 is string);int类型不是应该可以通过装箱转换为string类型吗,is操作符的定义也说能够通过装箱转换成为指定类型的就返回True吗?为什么执行结果是False呢?

解决方案 »

  1.   

    Console.WriteLine("1" is string);
      

  2.   

    is不是用来转换的,is是用来判断真假的。
    强制类型转换必须是类型放在前面,例如:
    另外,string类是不支持隐性转换的,只有在+运算的时候,才会转换,例如
    Console.WriteLine(1 + "" is string);
      

  3.   

    1和"1"的区别 Console.WriteLine(1 as string);错误 3 无法通过引用转换、装箱转换、取消装箱转换、包装转换或 null 类型转换将类型“int”转换为“string” G:\ztx\Project\CSDN\Default.aspx.cs 18 24 G:\...\CSDN\
      

  4.   

    is:检查对象是否与给定类型兼容,返回布尔类型值。例如,可以确定对象是否与 string 类型兼容,如下所示:
    if (obj is string)
    {
      //
    }
    as 运算符类似于强制转换,所不同的是,当转换失败时,运算符返回null,而不是引发异常
    如:
    string str="123";
    Button btn1=new Button();
    if ((str as btn1)!=null)
    {
     //转换成功
    }
      

  5.   

    在你的程序里:
    int类型不是应该可以通过装箱转换为string类型吗,is操作符的定义也说能够通过装箱转换成为指定类型的就返回True吗?is操作符用来判断1是否和string兼容的,当然返回false
      

  6.   

    你说的类型转换应该是 as 关键字。
    但也不支持装箱操作。只能是尝试的变换为指定类型。如果失败则返回null。
    比如:object obj = 1;
    string str = obj as string;但是下面的类型变换是不支持的。int obj = 1;
    string str = obj as string; 
      

  7.   

    is
    检查对象类型的兼容性,并返回结果,true或者false; 
    不会抛出异常; 
    如果对象为null,则返回值永远为false。 
    as
    检查对象类型的兼容性,并返回结果,如果不兼容就返回null; 
    不会抛出异常; 
    如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。