我对接口与委托的理解!!!
大家好,最近学习C#,也看了些JAVA,感觉C#中的委托怎么和JAVA中的接口是那么的相似,请问前辈,在C#中委托与接口到底有什么区别?是不是委托就是接口?
------解决方案--------------------委托和接口都允许类设计器分离类型声明和实现。给定的接口可由任何类或结构继承和实现;可以为任何类中的方法创建委托,前提是该方法符合委托的方法签名。接口引用或委托可由不了解实现该接口或委托方法的类的对象使用。既然存在这些相似性,那么类设计器何时应使用委托,何时又该使用接口呢?   
 在以下情况中使用委托:   
 当使用事件设计模式时。   
 当封装静态方法可取时。   
 当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。   
 需要方便的组合。   
 当类可能需要该方法的多个实现时。   
 在以下情况中使用接口:   
 当存在一组可能被调用的相关方法时。   
 当类只需要方法的单个实现时。   
 当使用接口的类想要将该接口强制转换为其他接口或类类型时。   
 当正在实现的方法链接到类的类型或标识时:例如比较方法。   
 使用单一方法接口而不使用委托的一个很好的示例是 IComparable 或 IComparable。IComparable 声明 CompareTo 方法,该方法返回一个整数,以指定相同类型的两个对象之间的小于、等于或大于关系。IComparable 可用作排序算法的基础,虽然将委托比较方法用作排序算法的基础是有效的,但是并不理想。因为进行比较的能力================================================================== 
 博客空间:http://blog.csdn.net/lovingkiss 
 资源下载:http://download.csdn.net/user/lovingkiss 
 Email:loving-kiss@163.com 
 本人说明: <我的帖子我做主,结贴率保持100%>  
 优惠接单开发,信誉保证,Q64180940(请清楚注明业务还是技术咨询)  
 ==================================================================属于类,而比较算法不会在运行时改变,所以单一方法接口是理想的     
------解决方案--------------------个人感觉,接口和抽象类反而更接近,而委托不过是方法根据签名传来传去的一个结构体——呵呵~~ 
 在我的想法里,更接近指针——不过这个可能是胡说八道,因为我对C的指针概念为零。   
 ================================================================== 
 博客空间:http://blog.csdn.net/lovingkiss 
 资源下载:http://download.csdn.net/user/lovingkiss 
 Email:loving-kiss@163.com 
 本人说明: <我的帖子我做主,结贴率保持100%>  
 优惠接单开发,信誉保证,Q64180940(请清楚注明业务还是技术咨询)  
 ==================================================================
------解决方案--------------------委托就是函数指针... 
 举个例子 
 #include  <stdio.h>  
 #include  <stdlib.h>    
 void print(void);   
 int main(int argc, char *argv[]) 
 { 
   void (*ptr)(void); 
   ptr = print; 
   ptr(); 
   system( "PAUSE ");	 
   return 0; 
 } 
 void print(void){ 
     printf( "called\n ");      
 }
------解决方案--------------------在.Net中,委托和接口是两个类型的东西,用法差异很大。建议先详细看看MSDN   
 ================================================================== 
 博客空间:http://blog.csdn.net/lovingkiss 
 资源下载:http://download.csdn.net/user/lovingkiss 
 Email:loving-kiss@163.com 
 本人说明: <我的帖子我做主,结贴率保持100%>  
 优惠接单开发,信誉保证,Q64180940(请清楚注明业务还是技术咨询)  
 ==================================================================
------解决方案--------------------  接口不等于委托,不仅如此,而且根本就是两个完全不同的概念. 
 虽然其定义相似,委托只定义方法签名,而接口也只能定义方法头,所以接口必须被继承,并定义其实现才能使用.而委托不用定义其方法体,只要实例化就可以直接使用. 
 个人理解:接口更相似于抽象类,必须被继承并实例化才能使用,本身不带方法的实现 
          委托更似于指向函数的指针,只要其方法签名相同,就可以指向任意的方法,而事先也不需要知道那个对象去执行. 
 up 
------解决方案--------------------不是这个概念,接口为了结构化更清晰些——用的地方不同,就无所谓哪一个更灵活了。   
 你比较白菜和斧子哪一个更实用——没有道理的。   
 ================================================================== 
 博客空间:http://blog.csdn.net/lovingkiss 
 资源下载:http://download.csdn.net/user/lovingkiss 
 Email:loving-kiss@163.com 
 本人说明: <我的帖子我做主,结贴率保持100%>  
 优惠接单开发,信誉保证,Q64180940(请清楚注明业务还是技术咨询)  
 ==================================================================
------解决方案--------------------委托和接口都允许类设计器分离类型声明和实现。给定的接口可由任何类或结构继承和实现;可以为任何类中的方法创建委托,前提是该方法符合委托的方法签名。接口引用或委托可由不了解实现该接口或委托方法的类的对象使用。   
 接口不等于委托,不仅如此,而且根本就是两个完全不同的概念. 
 虽然其定义相似,委托只定义方法签名,而接口也只能定义方法头,所以接口必须被继承,并定义其实现才能使用.而委托不用定义其方法体,只要实例化就可以直接使用.