请安装MSDN,这两个都是微软框架自带接口,所以看MSDN把,官方滴解释,要比这二手翻译来的到位

解决方案 »

  1.   

    1#说的对,看msdn
    http://msdn.microsoft.com/zh-cn/library/vstudio/system.icomparable.aspx
      

  2.   


    IComparable icomparable = s;
    这句话是说把s的引用赋给icomparable,那现在icomparable现在到底是什么类型呢(接口还是String)
      

  3.   


    IComparable icomparable = s;
    这句话是说把s的引用赋给icomparable,那现在icomparable现在到底是什么类型呢(接口还是String)s 引用什么对象,那么 icomparable 也还是引用同一个对象。编译器知道 icomparable 被你声明为 IComparable,它只是在编译时对程序进行语义分析,来保证你在编译前(编程时)没有类型错误。而.net平台,在进行这个赋值操作时,另外会做一次类型检查,保证s所引用的对象确实具有 IComparable 接口。通常我们说“icomparable 是什么类型?”,“s是什么类型?”,其实这都是简单的自然语言说法。这两个都是变量,只是引用具体的对象而已,它们只有声明类型(接口),它们可以引用凡是兼容此类型(接口)的所有对象。
      

  4.   

    始终是string类型,你用反射得到它的类型就知道了。
    string类型实现了IComparable 和IEnumerable 接口,所以你赋值给不同的变量后,其实只保留了对相应接口的实现。
      

  5.   


    谢谢smthgdin 
    那你意思是说现在icomparable 现在是String类型,那现在我有一点不明白了,不是类型相同的对象才能相互引用(赋值)的吗
      

  6.   


    谢谢smthgdin 
    那你意思是说现在icomparable 现在是String类型,那现在我有一点不明白了,不是类型相同的对象才能相互引用(赋值)的吗
    string对象本来就实现那2个接口,所以,自然可以转成icomparable 和 ienumerable。 
    按照你的理解,你可以理解成string类型是那两个接口的派生类型,那么子类自然可以转成父类,虽然这么说不对。
      
      

  7.   

    如果说金城武和黄晓明都"继承并实现"了“I_帅哥”接口那么 I_帅哥 a=new 金城武();你觉着这错了么,一点都没错啊。
      

  8.   

    编译器知道 icomparable 被你声明为 IComparable,它只是在编译时对程序进行语义分析,来保证你在编译前(编程时)没有类型错误ICompareble和String是一种类型吗