myEmployeeArray[i] = new Employee11(i);

解决方案 »

  1.   

    楼上说的对。
    因为Console.WriteLine("Value: {0}", obj);时
    调用了object.ToString
    加了虚函数后就会调用Employee11.ToString了
      

  2.   

    首先你这段代码编译就不能通过,empID为类Employee11的私有变量,return empID.ToString(  ); 这句话就有问题。你重载ToString方法,但是ToString又不在类Tester里,该类就不能调用。你copy下去,自己csc一下,能通过吗?
      

  3.   

    我觉得这段代码和输出都没问题呀? 楼主有什么不明白的吗?
    虽然你把Employee11传给以Object为参数的方法,但是因为是reference type传的是引用,CLR仍然知道这个表面上的Object实际上是Employee11,所以在调用toString()方法时,CLR根据多态的原则,调用了这个Object对象的真实类型(Employee11)的ToString()方法
      

  4.   

    Console.WriteLine("Value: {0}", obj);
    这时候,编译器要调用obj的ToString函数,如果你的类中没有覆写(override)这个函数的话,由于你的类是从System.Object派生的,所以Object.ToString就被调用了.而Object.ToString
    的行为是:
    The default implementation returns the fully qualified name of the type of the Object.