类库ccc
接口aaa
class sss:aaa
writeline(new sss)
为什么会显示ccc.sss?

解决方案 »

  1.   

    若 ToString 未被重写的话,给出的是完全限定名
    类库 ccc,类 sss,所以 ccc.sss 是对的
      

  2.   

    需要重写tostring方法 输出自己想要的结果
      

  3.   

    实际是什么就会得到什么具体值,比如说IAAA x = new SSS();那么这里的 x 的实实在在的东西当然是 SSS 类型的,而接口在此时(识别具体对象实例类型时)不过就是糊弄人的标题党。 
      

  4.   

    接口是编译器用来检查兼容性用的。比如说代码A x = new B();
    var y =(U)x;编译器会在编译时去检查 B 对象是否跟A兼容,而编译器产生的代码会在运行时去检查 A 是否跟U 兼容。强类型与弱类型的区别,不过就是加强了编译或者运行时的类型兼容性检查。原本你可能胡乱声明一个 object 弱类型变量也能引用对象,但是这不能尽早发现代码错误。强类型就可以尽早发现问题。但是说来说去,变量引用的实际的对象到底是什么类型的,那是骗不了人的。比如说代码var y =(U)x;这看似是把一个 A 类型变量引用的对象赋值给变量 y,但是实际上系统知道这个 y 变量的类型打印出来一定是 B,而不是什么 A 或者 U 那种标题党的东西。
      

  5.   

    而编译器产生的代码会在运行时去检查 A 是否跟U 兼容   -->   而编译器产生的代码会在运行时去检查 x 引用的实际的 B 类对象实例 是否跟U 兼容