看别人的代码,有时想,他们如何知道把object类型进行转换成另一类型.查看MSDN的例子也不一定知道到底应该转换成哪种类型

IHTMLControlRange rang = (IHTMLControlRange)body.createControlRange();
查看createControlRange()的返回类型是object,查看MSDN
返回的是controlRange 的收集
但是上面的也不知为何就可以转换成IHTMLControlRange呢?
我想当然的转成IHTMLDDElement 不知行不行?
这个是不是只有设计者才知道的答案呢?后续者只需要使用就是了?谢谢!

解决方案 »

  1.   

    object类型是所有类型的基类,所以它可以转换成任何类型的
      

  2.   

    .....不明白你说的是什么意思,我想LZ应该知道一点啦,object类型的数据是可以和其他数据类型互相转换的
      

  3.   

    .....不明白你说的是什么意思,我想LZ应该知道一点啦,object类型的数据是可以和其他数据类型互相转换的 
     
      

  4.   

    eg:
    //Student 是一个定义的类
    object o = new object();
    Student stu = (Student)o;  //error: System.InvalidCastException 不能转换
    如果是:
    object o = new Student();
    Student stu = (Student)o;   //ok
      

  5.   

    Object可以存各种类型,但是只能转换成数据原有的类型。
      

  6.   


    LZ你定义一个变量自然是为了以后使用,所以如果你想知道要把Object转成什么样,就要看是要在什么地方使用这个变量,使用的地方的那个变量是什么类型的,就把object转换成什么类型
      

  7.   

    MessageBox.Show(((IHTMLDDElement)body.createControlRange()).ToString());
    按这么方式转换提示不能强制,所以并不是object就是包络万象.它只能在原型产生的object下才能转换成其它派生的类型.
      

  8.   

    与楼主有同感。  C#中到处都是空洞的object类型,有的可能转换成数值、有的可以转换成字符串、有的可以转换成某种对象毫无规律可循。
       当我想具体了解某个对象有哪些属性、事件、方法可用时,C#只告诉我它是个object,而不告诉我是什么样的Object==> 结果,等于什么也没告诉我! 这一点与Delphi相比差远了。
        
      

  9.   

    Delphi中,如果你不了解某个对象,可以打开帮助,找出该对象所属的类,以及父类、爷爷类直到祖先类Object,可以看到该对象所拥有的全部属性、事件、方法。再不行,还可以查看其源代码。
      

  10.   

    只能看msdn了,会告诉你到底返回的是什么类型,不建议用强制类型转换,为啥不用as呢