就是无法转换,手工转换一下
object objURL = url;ref objURL;

解决方案 »

  1.   

    楼上的难道不知道ref实际上就是传地址吗?
      

  2.   

    是因为C#编译器不允许你可以定议一个如abc(int a)调用是用abc((long)123)就会出错因为C#是用签名来区分方法的,不可以有一调用可以使用两个方法主要是为了重载
      

  3.   

    xixigongzhu(夕夕公主) :1.字符串和对象都是引用类型2.字符串和对象都是保存在堆中,而不是堆栈
      

  4.   

    楼上的:
    虽然字符串也是引用类型,但在堆栈里存储的是这个字符串在常量表的Token
      

  5.   

    装箱操作
    object中保存的都是地址
    所以才会有 object Zero = 0;
    ref Zero
    而不能是 ref 0;内存 0x??????? ->  0变量object  0x******* -> 0x????????ref 0x******* OK  被调用过程得到内容 0x??????? 是一个地址 用它来操作
    ref 0x?????? 会导致严重错误 相当于使用了地址 0x0
      

  6.   

    我觉得,MS这样的设计是必须的
    ref的参数,要求传递的类型和方法签名完全一致否则,比如这样string s = "sdf";public void (ref object obj)
    {
       obj = new Form1();
       .........
    }就会产生不可预期的结果所以,为了安全性,.NET不允许这样传递参数
      

  7.   

    同样的道理public void ...(object obj)
    {
       .........
    }
    这样传值的方法
    无论你在里面如何处理这个obj
    都不会影响到外面的参数,所以允许传递一些参数的扩展类进来
    比如说
    int i = 10;
    ...(10);
      

  8.   

    ref是传引用调用,一个对字符串的引用不可能变成对object的引用。
    例如string s;
    s就只能引用字符串,而不可能引用其他类型的东西。这与隐式类型转换不同:object o = a;这样是可行的,但o是object的引用,而s还是string的引用,不可能把s变成object的引用。