.NET框架包括类和接口,在编写程序的时候,你可能知道正在用.NET的哪个类。然而,在这种情况下如果你用.NET支持的接口而不是它的类来编程时,代码会变得更加稳定、可用性会更高。请分析下面的代码:

private void LoadList (object [] items, ListBox l) 

 for (int i = 0; i < items.Length;i++) 
  l.Items.Add (items[i].ToString ()); 
}

  这个函数从一个可为任何对象的数组中加载ListBox,这段代码被限定为只能使用数组。假想过些时候你发现那些对象存在数据库中,或别的集合中。那么你需要修改程序来使用不同的集合类型。如果你用ICollection接口来写那段程序,你就不用修改那段程序了,对于任何实现ICollection接口的类型它都能很好的工作:

private void LoadList (ICollection items,ListBox l) 

  foreach (object o in items) 
  l.Items.Add (o.ToString ()); 
}

  ICollection被数组和所有System.Collection中的集合实现。此外,多维数组也支持ICollection接口。如果那还不够的话,数据库.NET类同样支持ICollection接口。用接口写的这个函数不用需改就可以才许多中情况下使用。

转载于:https://www.cnblogs.com/poor/archive/2009/03/02/1401573.html

C#编程尽量使用接口(转)相关推荐

  1. 为什么有人说面向对象编程就是面向接口编程?

    "面向对象编程就是面向接口编程" 这句话相信, 很多人都在网上见过, 装b利器. 我一开始也是这么想的, 那些装b者丢下这一句, 就没下文了. 首先, 我认为这句话是1个假命题. ...

  2. Golang面向API编程-interface(接口)

    Golang面向API编程-interface(接口) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Golang并不是一种典型的面向对象编程(Object Oriented Pr ...

  3. java 接口编程_JAVA面向接口编程

    一.什么是面向接口编程 要正确地使用Java语言进行面向对象的编程,从而提高程序的复用性,增加程序的可维护性.可扩展性,就必须是面向接口的编程.面向接口的编程就意味着:开发系统时,主体构架使用接口,接 ...

  4. 套接字编程---2(TCP套接字编程的流程,TCP套接字编程中的接口函数,TCP套接字的实现,TCP套接字出现的问题,TCP套接字多进程版本,TCP套接字多线程版本)

    TCP模型创建流程图 TCP套接字编程中的接口 socket 函数 #include <sys/types.h> /* See NOTES */ #include <sys/sock ...

  5. Java面向对象编程篇3——接口与抽象类

    Java面向对象编程篇3--接口与抽象类 1.接口(interface) 接口中可以含有变量和方法.但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是pub ...

  6. 可编程控制器/微机接口及微机应用综合装置

    ZN-02DPLC型 可编程控制器/微机接口及微机应用综合装置 一.概述 ZN-02DPLC型 PLC可编程控制器及微机接口及微机应用综合实验设备是做到一机多用.资源共享.便于管理.这一崭新的系统实现 ...

  7. java接口编程题_Java接口练习题

    1.说出下面程序的执行结果: interface InterfaceA { String S = "good "; void f(); } abstract class Class ...

  8. Java面向对象编程——抽象类和接口

    Java面向对象编程--抽象类和接口 定义类的过程就是抽象和封装的过程,而抽象类与接口则是对实体类进行更高层次的抽象,进定义公共行为和特征. 抽象类: 如果一个类没有足够的信息去描述一个具体的对象,那 ...

  9. 网络型PLC可编程控制/微机接口及微机应用综合实验装置

    ZN-03D网络型PLC可编程控制/微机接口及微机应用综合实验装置 一.概述 ZN-03D型 PLC可编程控制器及微机接口及微机应用综合实验设备.做到一机多用.资源共享.便于管理.这一崭新的系统实现了 ...

最新文章

  1. mac mysql的安装
  2. 幂等性 第三方交易编号_java幂等性的解决方案
  3. Pycharm 项目文件名变红色以及commit时文件错乱的原因及解决办法
  4. 操作系统学习(五) 、代码段和数据段描述符
  5. 滑动轮播_这样运营轮播图可以增加订单
  6. STM32跑分?看看你的能跑多少分!
  7. mysql 8.0.16修改root密码_mysql 8.0.16 winx64及Linux修改root用户密码 的方法
  8. gb50243-2016通风与空调工程施工质量验收规范_07K304 空调机房设计与安装
  9. 【AI视野·今日Robot 机器人论文速览 第十九期】Mon, 5 Jul 2021
  10. javascript面向对象系列第三篇——实现继承的3种形式
  11. Unity加载模块深度解析(网格篇)
  12. 计算机桌面桌面设置动态视频,电脑怎么设置动态桌面?电脑设置动态视频桌面图文教程...
  13. 网站建设html代码优化,网站设计代码优化让网站打开速度飞起来
  14. Windows API用以实现屏幕截图的方法
  15. Quasi-Dense Similarity Learning for Multiple Object Tracking
  16. 计算机师范专业行业分析,前景最好的4个师范专业,有行业“香馍馍”之称,别不信...
  17. IOTE 2019物联网嘉年华在深圆满落幕
  18. PHP系统常量及判断某常量是否被定义
  19. 面经_OPPO研究院_数据科学研究员实习岗
  20. html提示用Safari浏览器打开,Safari浏览器无法打开网页怎么办 Safari打不开网站原因及解决方法...

热门文章

  1. KVM虚拟机共享存储动态迁移与冷迁移
  2. python 中cPickle学习二
  3. C#学习笔记:预处理指令
  4. cisco数据中心理论小记-3
  5. Nginx 笔记与总结(14)expires 缓存设置
  6. android之多媒体篇(一)
  7. jQuery EasyUI API 中文文档 - 微调器(Spinner)
  8. C linux Debug
  9. 算法导论8.3-4习题解答(基数排序)
  10. 在XenApp如何发布SAP的客户端(上)