C#接口的一些疑问 请安装MSDN,这两个都是微软框架自带接口,所以看MSDN把,官方滴解释,要比这二手翻译来的到位 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1#说的对,看msdnhttp://msdn.microsoft.com/zh-cn/library/vstudio/system.icomparable.aspx IComparable icomparable = s;这句话是说把s的引用赋给icomparable,那现在icomparable现在到底是什么类型呢(接口还是String) IComparable icomparable = s;这句话是说把s的引用赋给icomparable,那现在icomparable现在到底是什么类型呢(接口还是String)s 引用什么对象,那么 icomparable 也还是引用同一个对象。编译器知道 icomparable 被你声明为 IComparable,它只是在编译时对程序进行语义分析,来保证你在编译前(编程时)没有类型错误。而.net平台,在进行这个赋值操作时,另外会做一次类型检查,保证s所引用的对象确实具有 IComparable 接口。通常我们说“icomparable 是什么类型?”,“s是什么类型?”,其实这都是简单的自然语言说法。这两个都是变量,只是引用具体的对象而已,它们只有声明类型(接口),它们可以引用凡是兼容此类型(接口)的所有对象。 始终是string类型,你用反射得到它的类型就知道了。string类型实现了IComparable 和IEnumerable 接口,所以你赋值给不同的变量后,其实只保留了对相应接口的实现。 谢谢smthgdin 那你意思是说现在icomparable 现在是String类型,那现在我有一点不明白了,不是类型相同的对象才能相互引用(赋值)的吗 谢谢smthgdin 那你意思是说现在icomparable 现在是String类型,那现在我有一点不明白了,不是类型相同的对象才能相互引用(赋值)的吗string对象本来就实现那2个接口,所以,自然可以转成icomparable 和 ienumerable。 按照你的理解,你可以理解成string类型是那两个接口的派生类型,那么子类自然可以转成父类,虽然这么说不对。 如果说金城武和黄晓明都"继承并实现"了“I_帅哥”接口那么 I_帅哥 a=new 金城武();你觉着这错了么,一点都没错啊。 编译器知道 icomparable 被你声明为 IComparable,它只是在编译时对程序进行语义分析,来保证你在编译前(编程时)没有类型错误ICompareble和String是一种类型吗 求c#创建dll及调用的方法 ado.net操作数据库的问题 关于加密解密 正则表达式替换问题 点右上角的关闭,但是进程还是在,请问如何彻底关闭呀? 在线等待: 在C#里面怎么实现打开的WEB窗口没有菜单栏,地址栏,工具栏,无法改变大小? 数组如何快速初始化为某个值? .net的Timer问题始终很难解决,恳请高手指点 wpf 中image控件获取 对象 如何把SQL SERVER中的IMAGE字段读出放到一个IMAGE控件中?(WEB页面) 求助!关于Sqlite报错“database is locked”的问题? 如何实现字体放大??
http://msdn.microsoft.com/zh-cn/library/vstudio/system.icomparable.aspx
IComparable icomparable = s;
这句话是说把s的引用赋给icomparable,那现在icomparable现在到底是什么类型呢(接口还是String)
IComparable icomparable = s;
这句话是说把s的引用赋给icomparable,那现在icomparable现在到底是什么类型呢(接口还是String)s 引用什么对象,那么 icomparable 也还是引用同一个对象。编译器知道 icomparable 被你声明为 IComparable,它只是在编译时对程序进行语义分析,来保证你在编译前(编程时)没有类型错误。而.net平台,在进行这个赋值操作时,另外会做一次类型检查,保证s所引用的对象确实具有 IComparable 接口。通常我们说“icomparable 是什么类型?”,“s是什么类型?”,其实这都是简单的自然语言说法。这两个都是变量,只是引用具体的对象而已,它们只有声明类型(接口),它们可以引用凡是兼容此类型(接口)的所有对象。
string类型实现了IComparable 和IEnumerable 接口,所以你赋值给不同的变量后,其实只保留了对相应接口的实现。
谢谢smthgdin
那你意思是说现在icomparable 现在是String类型,那现在我有一点不明白了,不是类型相同的对象才能相互引用(赋值)的吗
谢谢smthgdin
那你意思是说现在icomparable 现在是String类型,那现在我有一点不明白了,不是类型相同的对象才能相互引用(赋值)的吗
string对象本来就实现那2个接口,所以,自然可以转成icomparable 和 ienumerable。
按照你的理解,你可以理解成string类型是那两个接口的派生类型,那么子类自然可以转成父类,虽然这么说不对。