代码之家  ›  专栏  ›  技术社区  ›  user20358

哎呀,这作业里发生了什么

  •  3
  • user20358  · 技术社区  · 14 年前

    我碰到了这些代码行

    ClassA classAObject;
    //some lines of code that hydrate 'classAObject'
    DerivedFromClassA derivedObject = classAObject as DerivedFromClassA;
    

    怎么了,在最后一行?它是否只为derivedObject分配derivedObject和classAObject之间的公共值?

    2 回复  |  直到 14 年前
        1
  •  6
  •   Jon Skeet    14 年前

    不,大致相当于:

    DerivedFromClassA derivedObject = null;
    if (classAObject is DerivedFromClassA)
    {
        derivedObject = (DerivedFromClassA) classAObject;
    }
    

    换句话说,结果将 为空引用, 对同一对象的引用,但静态类型为派生类型。

        2
  •  3
  •   Simon Steele    14 年前

    不,它正在访问同一个对象,但您现在可以从类型访问该对象的部分 DerivedFromClassA . 只有一个对象。

    另外,如果classAObject不是 从类派生 或者从中派生的类型,则derivedObject将为空,因为没有有效的转换。